I have a server written in Java that can receive a shut down signal while it's listening to, processing, and updating Firebase data. Since the Firebase threads are daemon threads in Java, I wanted to add some delay to the main thread to allow write operations to complete.
My current idea is the latch approach: use some concurrent counter to track pending writing operations, and let the main thread exit when there are none. The counter would get updated in onComplete() callbacks, so I was wondering:
In the Firebase client, when might onComplete() callbacks never get called? Is there reasonable danger of deadlock?