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.