I'm sometimes getting deadlocks in Log2File where all my worker threads are getting blocked, but I can't figure out which monitor they are blocked on.
Thanks for sending the thread dump, it was very interesting.
I agree with you, it's not clear what is blocking these threads, at least from the thread dump. I think this could be a Derby bug. How often does it happen? Is it a new behavior? Looking at the source code, LogToFile.flush() has some complicated synchronization logic which interacts with the backup/checkpoint methods. Does your application perform a backup? Does your application involve replication? Does your application ever call SYSCS_UTIL.SYSCS_FREEZE_DATABASE or SYSCS_UTIL.SYSCS_CHECKPOINT_DATABASE? If you are calling SYSCS_FREEZE_DATABASE, is it possible that you have some path through your system which fails to subsequently call SYSCS_UNFREEZE_DATABASE? thanks, bryan
