-
Notifications
You must be signed in to change notification settings - Fork 96
Description
Description
Currently, the SystemDB datasource in Eclipse Dirigible is bound to H2, which works well for development environments but prevents certain applications from running reliably in production.
There are several built-in components (e.g., CSV Processor, BPMN Engine) that rely on the SystemDB to store metadata. When running Dirigible-based applications in production—typically inside containers—using H2 causes data loss or inconsistencies because the metadata is ephemeral and recreated at every restart.
Setup
The SystemDB can be configured to use PostgreSQL as follows:
DIRIGIBLE_DATABASE_SYSTEM_DRIVER: org.postgresql.Driver
DIRIGIBLE_DATABASE_SYSTEM_URL: jdbc:postgresql://database:5432/<databaseName>
DIRIGIBLE_DATABASE_SYSTEM_USERNAME: <userName>
DIRIGIBLE_DATABASE_SYSTEM_PASSWORD: <password>
Problem
When using SystemDB in production:
CSV Processorattempts to insert metadata on every container restart.BPMN enginecreates a new process version on each application startup, even when the BPMN file has not changed.- Other components reliant on SystemDB metadata also lose state when the container is recreated.
This happens because SystemDB is non-persistent, as it is tied to an in-memory or file-based H2 instance.
Additionally, some Dirigible components (e.g., BPMN entity classes) use column types such as CLOB, which are not supported by PostgreSQL and prevent schema creation.