Menu

Symmetric server does not start properly

Help
2014-05-21
2014-05-31
  • Pablo Sanchez

    Pablo Sanchez - 2014-05-21

    Hello to all, I'm trying to setup a replication scenario with a server Firebird 2.5 on CentOS 6.5 64bit, the master database will be there and some windows clients will work locally and synchronize with master database.

    I've setup the master properties:

    db.driver=org.firebirdsql.jdbc.FBDriver
    db.url=jdbc:firebirdsql:localhost:/var/lib/firebird/data/karampini/paidiatreio.fdb
    db.user=sysdba
    db.password=masterkey

    registration.url=
    sync.url=http://localhost:8080/sync/corp-000

    group.id=corp
    external.id=000

    job.purge.period.time.ms=7200000
    job.routing.period.time.ms=5000
    job.push.period.time.ms=10000

    and when I tried to start the server:

    ../bin/sym --engine corp-000 --port 8080

    I obtained this:

    Log output will be written to ../logs/symmetric.log
    [startup] - AbstractCommandLauncher - Option: name=engine, value={corp-000}
    [startup] - AbstractCommandLauncher - Option: name=port, value={8080}
    [startup] - SymmetricWebServer - About to start SymmetricDS web server on port 8080
    [startup] - / - Initializing Spring root WebApplicationContext
    [corp-000] - FirebirdSymmetricDialect - The DbDialect being used is org.jumpmind.symmetric.db.firebird.FirebirdSymmetricDialect
    [corp-000] - ExtensionPointManager - Found 7 extension points that will be registered
    [corp-000] - AbstractSymmetricEngine - Initializing SymmetricDS database
    [corp-000] - FirebirdSymmetricDialect - Checking if SymmetricDS tables need created or altered
    [startup] - / - Initializing Spring FrameworkServlet 'rest'
    [startup] - SymmetricWebServer - Starting JMX HTTP console on port 8081
    [startup] - SymmetricWebServer - Joining the web server main thread
    HttpAdaptor version 3.0.1 started on port 8081
    [corp-000] - AbstractSymmetricEngine - An error occurred while starting SymmetricDS
    org.jumpmind.db.sql.SqlException: GDS Exception. 335544343. invalid request BLR at offset 62
    function SYM_ESCAPE is not defined
    No message for code 335544932 found.
    at org.jumpmind.db.sql.AbstractSqlTemplate.translate(AbstractSqlTemplate.java:288)
    at org.jumpmind.db.platform.firebird.FirebirdJdbcSqlTemplate.translate(FirebirdJdbcSqlTemplate.java:59)
    at org.jumpmind.db.sql.AbstractSqlTemplate.translate(AbstractSqlTemplate.java:279)
    at org.jumpmind.db.sql.JdbcSqlTemplate.execute(JdbcSqlTemplate.java:417)
    at org.jumpmind.db.sql.JdbcSqlTemplate.queryForObject(JdbcSqlTemplate.java:136)
    at org.jumpmind.db.sql.AbstractSqlTemplate.queryForInt(AbstractSqlTemplate.java:71)
    at org.jumpmind.symmetric.db.firebird.FirebirdSymmetricDialect.createRequiredDatabaseObjects(FirebirdSymmetricDialect.java:70)
    at org.jumpmind.symmetric.db.AbstractSymmetricDialect.initTablesAndDatabaseObjects(AbstractSymmetricDialect.java:152)
    at org.jumpmind.symmetric.AbstractSymmetricEngine.setupDatabase(AbstractSymmetricEngine.java:365)
    at org.jumpmind.symmetric.AbstractSymmetricEngine.setup(AbstractSymmetricEngine.java:356)
    at org.jumpmind.symmetric.AbstractSymmetricEngine.start(AbstractSymmetricEngine.java:495)
    at org.jumpmind.symmetric.AbstractSymmetricEngine.start(AbstractSymmetricEngine.java:487)
    at org.jumpmind.symmetric.web.SymmetricEngineHolder$EngineStarter.run(SymmetricEngineHolder.java:428)
    Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544343. invalid request BLR at offset 62
    function SYM_ESCAPE is not defined
    No message for code 335544932 found.
    at org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:147)
    at org.firebirdsql.jdbc.FBPreparedStatement.<init>(FBPreparedStatement.java:46)
    at sun.reflect.GeneratedConstructorAccessor20.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.firebirdsql.jdbc.FBStatementFactory.createPreparedStatement(FBStatementFactory.java:92)
    at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:890)
    at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:845)
    at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:838)
    at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:314)
    at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313)
    at org.jumpmind.db.sql.JdbcSqlTemplate$1.execute(JdbcSqlTemplate.java:142)
    at org.jumpmind.db.sql.JdbcSqlTemplate.execute(JdbcSqlTemplate.java:415)
    ... 9 more
    [corp-000] - AbstractSymmetricEngine - SymmetricDS: type=server, name=corp-000, version=3.5.21, groupId=corp, externalId=000, databaseName=Firebird 2.50LI-V2.5.2.26539 Firebird 2.5/tcp (pip, databaseVersion=2.5, driverName=Jaybird JCA/JDBC driver, driverVersion=2.1

    Sounds like the SYM_ESCAPE function is not working, can I avoid using this function and use REPLACE instead?

    I've downloaded the source code but I don't know where to change nor how to deploy it after.

    Thanks in advance for any help you could provide.

     
  • Eric Long

    Eric Long - 2014-05-31

    I think the sym_udf.so we package is 32-bit, so you would need to recompile it for 64-bit. There is a README.txt in databases/firebird on how to compile it. We really should package the 64-bit version also.

    The Firebird code is in symmetric-client project in org.jumpmind.symmetric.db.firebird package in FirebirdSymmetricDialect and FirebirdTriggerTemplate. It looks like it doesn't use the SYM_ESCAPE function, but it does use the SYM_HEX function for encoding BLOBs. It does actually use the REPLACE function instead. I've forgotten the history now, but I think both Firebird and Interbase use the SYM_UDF.so/dll, and the SYM_ESCAPE is still needed for Interbase. Someone entered an issue to support Firebird 1.x, so we would need the function in that case. It wants the external functions installed during startup, so it's going to complain about SYM_HEX anyway. Maybe we should make that a warning on Firbird instead, since you might not even sync a BLOB.

    I entered this issue to improve the Firebird dialect: http://www.symmetricds.org/issues/view.php?id=1741

     

Log in to post a comment.