in src/afs.cc [3649:3680]
arrow::Result<size_t> write(LocalSessionData* localSession,
SharedRingBuffer* buffer,
const void* data,
size_t n) override
{
auto request = std::make_shared<WriteRequest>(localSession, buffer, data, n);
{
std::lock_guard<std::mutex> lock(mutex_);
writeRequests_.push_back(request);
}
kill(MyProcPid, SIGUSR1);
{
std::unique_lock<std::mutex> lock(mutex_);
conditionVariable_.wait(lock, [&] {
if (localSession->errorMessage.has_value())
{
return true;
}
if (INTERRUPTS_PENDING_CONDITION())
{
return true;
}
return request->finished;
});
}
ARROW_RETURN_NOT_OK(check_local_session_error(localSession));
if (INTERRUPTS_PENDING_CONDITION())
{
return arrow::Status::IOError("interrupted");
}
return request->writtenBytes;
}