You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As reported on Firebird-support (2019-11-25, thread "Why I cannot use firebird services to validate a remote database"):
I was trying to shutdown a Firebird 2.1 using the Jaybird 3.x to validate the database.
I wasn't abble to shutdown it like "gfix -shut multi -force 0 remote_server_host:database"
So, when I perform the validate using the jaybird service I got this:
java.sql.SQLException: bad parameters on attach or create database; secondary server attachments cannot validate databases [SQLState:HY000, ISC error code:335544325]
at org.firebirdsql.gds.ng.FbExceptionBuilder$Type$1.createSQLException(FbExceptionBuilder.java:498)
at org.firebirdsql.gds.ng.FbExceptionBuilder.toFlatSQLException(FbExceptionBuilder.java:299)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readStatusVector(AbstractWireOperations.java:135)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.processOperation(AbstractWireOperations.java:199)
at org.firebirdsql.gds..ng.wire.AbstractWireOperations.readSingleResponse(AbstractWireOperations.java:166)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readResponse(AbstractWireOperations.java:150)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readGenericResponse(AbstractWireOperations.java:252)
at org.firebirdsql.gds.ng.wire.AbstractFbWireService.readGenericResponse(AbstractFbWireService.java:138)
at org.firebirdsql.gds.ng.wire.version10.V10Service.startServiceAction(V10Service.java:212)
at org.firebirdsql.management.FBServiceManager.executeServicesOperation(FBServiceManager.java:280)
at org.firebirdsql.management.FBMaintenanceManager.validateDatabase(FBMaintenanceManager.java:239)
at br.com.jjw.besser.atualizador.client.utils.firebird.FirebirdMaintenanceHelper.validate(FirebirdMaintenanceHelper.java:209)
at br.com.jjw.besser.atualizador.client.utils.firebird.FirebirdMaintenanceHelper.main(FirebirdMaintenanceHelper.java:261)
Caused by: org.firebirdsql.jdbc.FBSQLExceptionInfo: bad parameters on attach or create database
But, if I use the gfix command: gfix -shut multi -force 0 remote:database the validation performs!
Workaround/solution is to add a 1 second sleep between shutdown and validate:
The problem was the "time" between perform the SHUTDOWN and the VALIDATION.
I just add a 1 second "sleep" between the shutdown and validate, and it works!
I'm not sure if this is a Jaybird problem, or just a result of how Firebird handles a shutdown. I'll need to investigate if this is something that Jaybird can fix or not.
Unfortunately, I have not been able to reproduce this problem. My guess is that the shutdown takes some time to complete, even after the shutdown returns, or possibly it is advisable to specify a non-zero timeout (although AFAIK, that shouldn't matter with SHUTDOWN_FORCE).
If you can consistently reproduce it, it would be helpful for me to get more information:
* What is the exact Firebird version?
* What platform (Windows, Linux, ...)?
* Do you use SuperServer, SuperClassic or Classic?
* How many connections are attached to the database when issuing the shutdown, and what are they doing?
Submitted by: @mrotteveel
As reported on Firebird-support (2019-11-25, thread "Why I cannot use firebird services to validate a remote database"):
I was trying to shutdown a Firebird 2.1 using the Jaybird 3.x to validate the database.
I wasn't abble to shutdown it like "gfix -shut multi -force 0 remote_server_host:database"
So, when I perform the validate using the jaybird service I got this:
java.sql.SQLException: bad parameters on attach or create database; secondary server attachments cannot validate databases [SQLState:HY000, ISC error code:335544325]
at org.firebirdsql.gds.ng.FbExceptionBuilder$Type$1.createSQLException(FbExceptionBuilder.java:498)
at org.firebirdsql.gds.ng.FbExceptionBuilder.toFlatSQLException(FbExceptionBuilder.java:299)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readStatusVector(AbstractWireOperations.java:135)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.processOperation(AbstractWireOperations.java:199)
at org.firebirdsql.gds..ng.wire.AbstractWireOperations.readSingleResponse(AbstractWireOperations.java:166)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readResponse(AbstractWireOperations.java:150)
at org.firebirdsql.gds.ng.wire.AbstractWireOperations.readGenericResponse(AbstractWireOperations.java:252)
at org.firebirdsql.gds.ng.wire.AbstractFbWireService.readGenericResponse(AbstractFbWireService.java:138)
at org.firebirdsql.gds.ng.wire.version10.V10Service.startServiceAction(V10Service.java:212)
at org.firebirdsql.management.FBServiceManager.executeServicesOperation(FBServiceManager.java:280)
at org.firebirdsql.management.FBMaintenanceManager.validateDatabase(FBMaintenanceManager.java:239)
at br.com.jjw.besser.atualizador.client.utils.firebird.FirebirdMaintenanceHelper.validate(FirebirdMaintenanceHelper.java:209)
at br.com.jjw.besser.atualizador.client.utils.firebird.FirebirdMaintenanceHelper.main(FirebirdMaintenanceHelper.java:261)
Caused by: org.firebirdsql.jdbc.FBSQLExceptionInfo: bad parameters on attach or create database
But, if I use the gfix command: gfix -shut multi -force 0 remote:database the validation performs!
Workaround/solution is to add a 1 second sleep between shutdown and validate:
The problem was the "time" between perform the SHUTDOWN and the VALIDATION.
I just add a 1 second "sleep" between the shutdown and validate, and it works!
FBMaintenanceManager mgr = ...... ;
mgr.shutdownDatabase(FBMaintenanceManager.SHUTDOWN_FORCE, 0);
Thread.sleep(1000); // holy sleep
mgr.validateDatabase(FBMaintenanceManager.VALIDATE_READ_ONLY);
The text was updated successfully, but these errors were encountered: