fix: change the location where stopped is checked, because a yield could cause cause stopped to be set after the existing check

This commit is contained in:
Evan Tschannen 2019-03-20 14:28:32 -07:00
parent 5a00f567be
commit 2ed1d58d16
2 changed files with 4 additions and 12 deletions

View File

@ -1530,15 +1530,11 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
state Version ver = 0;
state std::vector<TagsAndMessage> messages;
loop {
if(logData->stopped) {
return Void();
}
state bool foundMessage = r->hasMessage();
if (!foundMessage || r->version().version != ver) {
ASSERT(r->version().version > lastVer);
if (ver) {
if(endVersion.present() && ver > endVersion.get()) {
if(logData->stopped || (endVersion.present() && ver > endVersion.get())) {
return Void();
}
@ -1577,7 +1573,7 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
if (!foundMessage) {
ver--;
if(ver > logData->version.get()) {
if(endVersion.present() && ver > endVersion.get()) {
if(logData->stopped || (endVersion.present() && ver > endVersion.get())) {
return Void();
}

View File

@ -1898,15 +1898,11 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
state Version ver = 0;
state std::vector<TagsAndMessage> messages;
loop {
if(logData->stopped) {
return Void();
}
state bool foundMessage = r->hasMessage();
if (!foundMessage || r->version().version != ver) {
ASSERT(r->version().version > lastVer);
if (ver) {
if(endVersion.present() && ver > endVersion.get()) {
if(logData->stopped || (endVersion.present() && ver > endVersion.get())) {
return Void();
}
@ -1945,7 +1941,7 @@ ACTOR Future<Void> pullAsyncData( TLogData* self, Reference<LogData> logData, st
if (!foundMessage) {
ver--;
if(ver > logData->version.get()) {
if(endVersion.present() && ver > endVersion.get()) {
if(logData->stopped || (endVersion.present() && ver > endVersion.get())) {
return Void();
}