throws InterruptedException {
for (;;) {
Sync signal;
// we want to become the current writer
Sync exclusive = writerStateRWLock.writeLock();
exclusive.acquire();
try {
if (activeWriter == null
&& !readLockMap.hasDependency(changeLog)) {
activeWriter = new WriteLockImpl(changeLog);
activeWriterThread = Thread.currentThread();