{
                    --timeout_ms;   
                    if (timeout_ms == 0)
                        return false;
                    continue;
                }
                throwFromErrno("Cannot poll pipe", ErrorCodes::CANNOT_READ_FROM_FILE_DESCRIPTOR);
            }
            if (poll_res == 0)
                return false;
            int notification_num = 0;
            ssize_t read_res = ::read(fd, &notification_num, sizeof(notification_num));
            if (read_res < 0)
            {
                if (errno == EINTR)
                    continue;
                throwFromErrno("Cannot read from pipe", ErrorCodes::CANNOT_READ_FROM_FILE_DESCRIPTOR);
            }
            if (read_res == sizeof(notification_num))
            {
                if (notification_num == sequence_num.load(std::memory_order_relaxed))
                    return true;
                else
                    continue;   
            }
            throw Exception("Logical error: read wrong number of bytes from pipe", ErrorCodes::LOGICAL_ERROR);
        }
    }
}
StorageSystemStackTrace::StorageSystemStackTrace(const StorageID & table_id_)