fix: we need to return from commit when stopped

This commit is contained in:
Evan Tschannen 2018-06-18 22:12:46 -07:00
parent 403fb5a2e9
commit df4c445e25
1 changed files with 11 additions and 11 deletions

View File

@ -1175,13 +1175,8 @@ ACTOR Future<Void> tLogCommit(
Void _ = wait(delay(0, g_network->getCurrentTask()));
}
if(logData->stopped) {
req.reply.sendError( tlog_stopped() );
return Void();
}
state double waitStartT = 0;
while( self->bytesInput - self->bytesDurable >= SERVER_KNOBS->TLOG_HARD_LIMIT_BYTES ) {
while( self->bytesInput - self->bytesDurable >= SERVER_KNOBS->TLOG_HARD_LIMIT_BYTES && !logData->stopped ) {
if (now() - waitStartT >= 1) {
TraceEvent(SevWarn, "TLogUpdateLag", logData->logId)
.detail("Version", logData->version.get())
@ -1192,6 +1187,11 @@ ACTOR Future<Void> tLogCommit(
Void _ = wait( delayJittered(.005, TaskTLogCommit) );
}
if(logData->stopped) {
req.reply.sendError( tlog_stopped() );
return Void();
}
if (logData->version.get() == req.prevVersion) { // Not a duplicate (check relies on no waiting between here and self->version.set() below!)
if(req.debugID.present())
g_traceBatch.addEvent("CommitDebug", tlogDebugID.get().first(), "TLog.tLogCommit.Before");
@ -1477,12 +1477,8 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
}
}
if(logData->stopped) {
return Void();
}
state double waitStartT = 0;
while( self->bytesInput - self->bytesDurable >= SERVER_KNOBS->TLOG_HARD_LIMIT_BYTES ) {
while( self->bytesInput - self->bytesDurable >= SERVER_KNOBS->TLOG_HARD_LIMIT_BYTES && !logData->stopped ) {
if (now() - waitStartT >= 1) {
TraceEvent(SevWarn, "TLogUpdateLag", logData->logId)
.detail("Version", logData->version.get())
@ -1493,6 +1489,10 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
Void _ = wait( delayJittered(.005, TaskTLogCommit) );
}
if(logData->stopped) {
return Void();
}
Version ver = 0;
std::vector<TagsAndMessage> messages;
while (true) {