{"record":{"id":"31b7b2d25cc115c9","repo":"quarkusio/quarkus","slug":"the-narayana-jta-extension-is-configured-to-use-th","errorCode":null,"errorMessage":"The Narayana JTA extension is configured to use the datasource '${objectStoreDataSourceName}' but that datasource is not configured. To solve this, either configure datasource ${objectStoreDataSourceName} referring to https://quarkus.io/guides/datasource for guidance, or configure another datasource to use in the Narayana JTA extension  by setting property 'quarkus.transaction-manager.object-store.datasource' to the name of a configured datasource.","messagePattern":"The Narayana JTA extension is configured to use the datasource '(.+?)' but that datasource is not configured\\. To solve this, either configure datasource (.+?) referring to https://quarkus\\.io/guides/datasource for guidance, or configure another datasource to use in the Narayana JTA extension  by setting property 'quarkus\\.transaction-manager\\.object-store\\.datasource' to the name of a configured datasource\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"critical","filePath":"extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/NarayanaJtaRecorder.java","lineNumber":172,"sourceCode":"        if (transactions.getValue().objectStore().type().equals(ObjectStoreType.JDBC)) {\n            final String objectStoreDataSourceName;\n            if (transactions.getValue().objectStore().datasource().isEmpty()) {\n                if (!DataSourceUtil.hasDefault(configuredDataSourcesConfigKeys.keySet())) {\n                    throw new ConfigurationException(\n                            \"The Narayana JTA extension does not have a datasource configured as the JDBC object store,\"\n                                    + \" so it defaults to the default datasource,\"\n                                    + \" but that datasource is not configured.\"\n                                    + \" To solve this, either configure the default datasource,\"\n                                    + \" referring to https://quarkus.io/guides/datasource for guidance,\"\n                                    + \" or configure the datasource to use in the Narayana JTA extension \"\n                                    + \" by setting property 'quarkus.transaction-manager.object-store.datasource' to the name of a configured datasource.\");\n                }\n                objectStoreDataSourceName = DataSourceUtil.DEFAULT_DATASOURCE_NAME;\n            } else {\n                objectStoreDataSourceName = transactions.getValue().objectStore().datasource().get();\n\n                if (!configuredDataSourcesConfigKeys.keySet().contains(objectStoreDataSourceName)) {\n                    throw new ConfigurationException(\n                            \"The Narayana JTA extension is configured to use the datasource '\"\n                                    + objectStoreDataSourceName\n                                    + \"' but that datasource is not configured.\"\n                                    + \" To solve this, either configure datasource \" + objectStoreDataSourceName\n                                    + \" referring to https://quarkus.io/guides/datasource for guidance,\"\n                                    + \" or configure another datasource to use in the Narayana JTA extension \"\n                                    + \" by setting property 'quarkus.transaction-manager.object-store.datasource' to the name of a configured datasource.\");\n                }\n            }\n            if (dataSourcesWithTransactionIntegration.contains(objectStoreDataSourceName)) {\n                throw new ConfigurationException(String.format(\n                        \"The Narayana JTA extension is configured to use the '%s' JDBC \"\n                                + \"datasource as the transaction log storage, \"\n                                + \"but that datasource does not have transaction capabilities disabled. \"\n                                + \"To solve this, please set '%s=disabled', or configure another datasource \"\n                                + \"with disabled transaction capabilities as the JDBC object store. \"\n                                + \"Please refer to the https://quarkus.io/guides/transaction#jdbcstore for more information.\",\n                        objectStoreDataSourceName, configuredDataSourcesConfigKeys.get(objectStoreDataSourceName)));","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/NarayanaJtaRecorder.java#L154-L190","documentation":"Same startup path as the default-datasource error, but here quarkus.transaction-manager.object-store.datasource names a datasource that does not exist in the configured datasource set. The recorder validates the name in startRecoveryService and throws ConfigurationException, aborting startup.","triggerScenarios":"quarkus.transaction-manager.object-store.datasource=<name> where <name> is not among the configured datasources (typo, datasource removed, name not matching quarkus.datasource.\"<name>\". config keys).","commonSituations":"Typos in the datasource name; renaming/removing a named datasource without updating the transaction config; copy-pasting config between projects; case sensitivity of named datasource config keys.","solutions":["Set quarkus.transaction-manager.object-store.datasource to a name that has a matching quarkus.datasource.\"<name>\".* configuration block","Or remove the property to fall back to the default datasource","Verify the exact configured name in application.properties / profiles (test vs prod configs may differ)"],"exampleFix":"# before\nquarkus.transaction-manager.object-store.datasource=tx-store\n# after\nquarkus.datasource.\"tx-store\".db-kind=postgresql\nquarkus.datasource.\"tx-store\".jdbc.url=jdbc:postgresql://localhost:5432/txstore\nquarkus.transaction-manager.object-store.datasource=tx-store","handlingStrategy":"validation","validationCode":"String ds = ConfigProvider.getConfig().getValue(\"quarkus.transaction-manager.object-store.datasource\", String.class); if (ConfigProvider.getConfig().getOptionalValue(\"quarkus.datasource.\\\"\" + ds + \"\\\".db-kind\", String.class).isEmpty()) throw new IllegalStateException(\"object-store datasource not configured: \" + ds);","typeGuard":null,"tryCatchPattern":"try { app.start(); } catch (ConfigurationException e) { if (e.getMessage().contains(\"is configured to use the datasource\")) { /* fix quarkus.transaction-manager.object-store.datasource */ } throw e; }","preventionTips":["Keep the object-store datasource name in a shared config constant","Grep application.properties for all quarkus.datasource.\"<name>\" blocks and cross-check the object-store name","Re-check config after renaming or deleting datasources"],"tags":["narayana-jta","configuration","datasource","object-store","startup"],"backgroundTag":"missing-datasource-configuration","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}