| 243 | } |
| 244 | |
| 245 | void updateLiveCommittedVersion(Reference<MasterData> self, ReportRawCommittedVersionRequest req) { |
| 246 | self->minKnownCommittedVersion = std::max(self->minKnownCommittedVersion, req.minKnownCommittedVersion); |
| 247 | |
| 248 | if (req.version > self->liveCommittedVersion.get()) { |
| 249 | if (SERVER_KNOBS->ENABLE_VERSION_VECTOR && req.writtenTags.present()) { |
| 250 | // TraceEvent("Received ReportRawCommittedVersionRequest").detail("Version",req.version); |
| 251 | int8_t primaryLocality = |
| 252 | SERVER_KNOBS->ENABLE_VERSION_VECTOR_HA_OPTIMIZATION ? self->locality : tagLocalityInvalid; |
| 253 | self->ssVersionVector.setVersion(req.writtenTags.get(), req.version, primaryLocality); |
| 254 | self->versionVectorTagUpdates.addMeasurement(req.writtenTags.get().size()); |
| 255 | } |
| 256 | auto curTime = now(); |
| 257 | // add debug here to change liveCommittedVersion to time bound of now() |
| 258 | debug_advanceVersionTimestamp(self->liveCommittedVersion.get(), curTime + CLIENT_KNOBS->MAX_VERSION_CACHE_LAG); |
| 259 | // also add req.version but with no time bound |
| 260 | debug_advanceVersionTimestamp(req.version, std::numeric_limits<double>::max()); |
| 261 | self->databaseLocked = req.locked; |
| 262 | self->proxyMetadataVersion = req.metadataVersion; |
| 263 | // Note the set call switches context to any waiters on liveCommittedVersion before continuing. |
| 264 | self->liveCommittedVersion.set(req.version); |
| 265 | } |
| 266 | ++self->reportLiveCommittedVersionRequests; |
| 267 | } |
| 268 | |
| 269 | ACTOR Future<Void> waitForPrev(Reference<MasterData> self, ReportRawCommittedVersionRequest req) { |
| 270 | state double startTime = now(); |
no test coverage detected