void wakeup() {
        wokenUp.set(true);
        lock.lock();
        try {
            notEmptyCondition.signalAll();
        } finally {
            lock.unlock();
        }
    }
Allows the caller to await presence of data in the buffer. The method will block, returning only
under one of the following conditions:

<ol>
    <li>The buffer was already non-empty on entry</li>
    <li>The buffer was populated during the wait</li>
    <li>The remaining time on the {@link Timer timer} elapsed</li>
    <li>The thread was interrupted</li>
</ol>

@param timer Timer that provides time to wait
clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareFetchBuffer.java