Uploaded image for project: 'FUSE ESB'
  1. FUSE ESB
  2. ESB-821

FUSE ESB 4 Failover does not work with PostgreSQL and Oracle

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Done
    • Affects Version/s: 4.1.0.2-fuse
    • Fix Version/s: 4.2.0.0M1-fuse
    • Component/s: Core
    • Labels:
      None

      Description

      If you configure FUSE ESB 4 to use a JDBC lock for failover (i.e. the following configuration) then ServiceMix will fail with the error:

      Could not obtain lock: FATAL: database "postgres;create=true" does not exist

      Configuration (in system.properties):
      [[
      servicemix.lock=true
      servicemix.lock.class=org.apache.servicemix.kernel.main.DefaultJDBCLock
      servicemix.lock.level=50
      servicemix.lock.delay=10

      servicemix.lock.jdbc.url=jdbc:postgresql://localhost/postgres
      servicemix.lock.jdbc.driver=org.postgresql.Driver
      servicemix.lock.jdbc.user=postgres
      servicemix.lock.jdbc.password=postgres

      servicemix.lock.jdbc.table=SERVICEMIX_LOCK
      servicemix.lock.jdbc.clustername=smx4
      servicemix.lock.jdbc.timeout=30
      ]]

      I've checked the Karaf code for JDBCLock, and the string ';created=true' is always being added to the jdbc URL. I suspect that this approach has only been tested with Derby? When used with PostgreSQL, the JDBC driver errantly thinks that this suffix is in fact part of the database name.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                willem.jiang Willem Jiang
                Reporter:
                ade1 Adrian Trenaman
              • Votes:
                1 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: