Metadata update and pool
I have a web application which uses jaybird connection pooling. Now I need
to support updating meta-data while the application is online. But Firebird
doesn't allow certain metadata updates while there are open connections.
Whenever any part of the application needs a connection, it calls a global
static function. And connections are ALWAY open for a very short time only.
So I want to do the following:
- Lock other threads from getting new connctions. (Easy: synchronized block)
- Wait until all open connections are closed. (Counting or buildin?)
- Shutdown the pool. (possible?)
- Use a single connection to do the metadata updates.
- Restart the pool. (possible?)
- Unlock waiting threads.
My questions now:
- Did I oversee any problems?
- Is there a buildin method to see if connections are still open?
- Can I shutdown / restart the pool? How?
- Any other suggestions?
And some not directly related questions:
- Can meta-data updates be send in a block with a single commit?
- Are they correctly rolled back if one failes?
- Can I combine meta-data and real-data updates?
[Non-text portions of this message have been removed]