Hi Group,
I'd like to discuss the issue that I noticed today. I can't see any mention
of it in the internet, this group's archive or the bug list. The version of
H2 package that I'm using: 1.3.175
I've noticed I can't successfully stop PG server which was previously
stopped already. This means, that:
- Starting PG server works OK - the service is available to JDBC clients,
- Stopping the server works fine - resources are released (e.g. socket),
- Starting the same instance of PG Server is successful.
- Running stop() on the server object again executes cleanly but the
resources are never released.
Further investigation also showed:
- This isssue does not affect Tcp Server. It can be start()-ed and
stop()-ped however many times,
- I haven't checked whether the WebServer is affected, too.
- The reason for this is that how the flag
[org.h2.server..pg.PgServer.stop] is handled:
- it's not initialized (=false),
- is set to true in stop() method,
- release of socket resource depends on its value. If the value of
stop member is already true, stop() skipps it's main block of
functionality.
- TcpServer is very similar to PgServer. It also maintains similar flag,
also called [stop]. With regard to handling of it, TcpServer, it has one
additional operation on this flag. It is to set it to false whenever
start() is called.
- Creating a local copy of PgServer and setting this flag to false every
time the server is started, allows the start-stop cycle to be repeated with
the resources being handled accordingly.
I'd appreciate your advice. Is this a bug or is server object not intended
to be re-used?
Thanks,
Konrad
P.S. To reproduce:
Server pg = Server.createPgServer("-pgPort", "9042");
pg.stop(); //this sets the flag to true
//you can create ServerSocket on 9042 here
pg.start(); //this should set the flag to false
pg.stop(); //because the flag is already true, this has no effect
//ServerSocket creation will fail here
--
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.