Database and Third-Party Applications in Xray

JFrog Installation & Setup Documentation

Content Type
Installation & Setup
Database

Every artifact and build indexed by Xray is broken down into multiple components. These components and their interrelationships are represented in a checksum-based components graph. Xray uses PostgreSQL to store and query this component's graph.

Xray supports the following PostgreSQL versions:

PostgreSQL Version

Xray Version

17.x

3.121

16.x

3.107

15.x

3.78.9

14.x

13.x

3.18

RabbitMQ

RabbitMQ is installed as part of the Xray installation for every node. In an HA architecture, Xray utilises queue mirroring and replication between different RabbitMQ nodes. The recommended installation method involves using split mode and setting up a separate 3-node RabbitMQ cluster with Xray HA.

Note: JFrog has added support for RabbitMQ Quorum Queues, available as an optional parameter in the system.yaml, because RabbitMQ has deprecated Classic Queue mirroring in version 4.x. Consequently, JFrog will also deprecate Classic Queue support and transition to Quorum Queues. It is recommended to enable Quorum Queues in Xray, as JFrog plans to fully transition to RabbitMQ 4.x and discontinue Classic Queue support in upcoming versions.

RabbitMQ Version

Quorum Queues

Classic Queues

Erlang Version compatibility

3.7.x

Not supported

Must

From 19.3 to 22.x

3.8.0 +

Recommended

Not recommended

From 23.2 to 24.3

3.13.0+

Recommended

Not recommended

From 26.0 to 26.2.x

4.x

Must

Not supported

From 26.2.x to 27.x

Xray encompasses multiple flows, including scanning, impact analysis, and database synchronisation. These flows require processing by various Xray microservices. Flows comprise multiple steps completed by the Xray services. Xray uses RabbitMQ to manage these different flows and track synchronous and asynchronous communication between microservices.

Erlang

Xray incorporates Erlang and DB-Util as third-party dependencies. These packages are bundled with all Xray installers except for the Linux Archive.

Please ensure you are using the correct Erlang version corresponding to your Xray version:

  • Xray versions 3.124.x requires Erlang 26. For more information on RabbitMQ and Erlang compatibility, please refer to the RabbitMQ and Erlang/OTP Compatibility Matrix.

  • Xray 3.124 and later versions need Erlang 27 if we have enabled the RabbitMQ 4.x using properties.