def METHOD_NAME(self):
    """Release the 'read' lock."""
    self.condition.acquire()
    try:
        self.async_ -= 1
        # check if we are the last asynchronous reader thread
        # out the door.
        if self.async_ == 0:
            # yes. so if a sync operation is waiting, notify_all to wake
            # it up
            if self.current_sync_operation is not None:
                self.condition.notify_all()
        elif self.async_ < 0:
            raise LockError(
                "Synchronizer error - too many "
                "release_read_locks called"
            )
        log.debug("%s released read lock", self)
    finally:
        self.condition.release()