From ceb83f7f5e3189df44129139bfe7a930ff7c6bc4 Mon Sep 17 00:00:00 2001 From: sfc-gh-tclinkenbeard Date: Sat, 14 Aug 2021 16:51:39 -0700 Subject: [PATCH 1/2] Make ccInterface a const reference in workerServer --- fdbserver/ClusterController.actor.cpp | 8 ++++---- fdbserver/WorkerInterface.actor.h | 2 +- fdbserver/masterserver.actor.cpp | 2 +- fdbserver/worker.actor.cpp | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/fdbserver/ClusterController.actor.cpp b/fdbserver/ClusterController.actor.cpp index 7ddae0a5ba..d239b7cbab 100644 --- a/fdbserver/ClusterController.actor.cpp +++ b/fdbserver/ClusterController.actor.cpp @@ -4858,18 +4858,18 @@ ACTOR Future clusterControllerCore(ClusterControllerFullInterface interf, ++self.getWorkersRequests; vector workers; - for (auto& it : self.id_worker) { + for (auto const& [id, worker] : self.id_worker) { if ((req.flags & GetWorkersRequest::NON_EXCLUDED_PROCESSES_ONLY) && - self.db.config.isExcludedServer(it.second.details.interf.addresses())) { + self.db.config.isExcludedServer(worker.details.interf.addresses())) { continue; } if ((req.flags & GetWorkersRequest::TESTER_CLASS_ONLY) && - it.second.details.processClass.classType() != ProcessClass::TesterClass) { + worker.details.processClass.classType() != ProcessClass::TesterClass) { continue; } - workers.push_back(it.second.details); + workers.push_back(worker.details); } req.reply.send(workers); diff --git a/fdbserver/WorkerInterface.actor.h b/fdbserver/WorkerInterface.actor.h index 091d6fcee7..b1ee9e1728 100644 --- a/fdbserver/WorkerInterface.actor.h +++ b/fdbserver/WorkerInterface.actor.h @@ -925,7 +925,7 @@ ACTOR Future storageServer( connFile); // changes pssi->id() to be the recovered ID); // changes pssi->id() to be the recovered ID ACTOR Future masterServer(MasterInterface mi, Reference const> db, - Reference>> ccInterface, + Reference> const> ccInterface, ServerCoordinators serverCoordinators, LifetimeToken lifetime, bool forceRecovery); diff --git a/fdbserver/masterserver.actor.cpp b/fdbserver/masterserver.actor.cpp index 7a04d53aad..49476c493f 100644 --- a/fdbserver/masterserver.actor.cpp +++ b/fdbserver/masterserver.actor.cpp @@ -1981,7 +1981,7 @@ ACTOR Future masterCore(Reference self) { ACTOR Future masterServer(MasterInterface mi, Reference const> db, - Reference>> ccInterface, + Reference> const> ccInterface, ServerCoordinators coordinators, LifetimeToken lifetime, bool forceRecovery) { diff --git a/fdbserver/worker.actor.cpp b/fdbserver/worker.actor.cpp index cd88f39b3d..f35cdd1aa6 100644 --- a/fdbserver/worker.actor.cpp +++ b/fdbserver/worker.actor.cpp @@ -604,7 +604,7 @@ ACTOR Future registrationClient(Reference> dbInfo) { +bool addressInDbAndPrimaryDc(const NetworkAddress& address, Reference const> dbInfo) { const auto& dbi = dbInfo->get(); if (dbi.master.addresses().contains(address)) { @@ -661,7 +661,7 @@ bool addressInDbAndPrimaryDc(const NetworkAddress& address, Reference> dbInfo) { +bool addressesInDbAndPrimaryDc(const NetworkAddressList& addresses, Reference const> dbInfo) { return addressInDbAndPrimaryDc(addresses.address, dbInfo) || (addresses.secondaryAddress.present() && addressInDbAndPrimaryDc(addresses.secondaryAddress.get(), dbInfo)); } @@ -723,10 +723,10 @@ TEST_CASE("/fdbserver/worker/addressInDbAndPrimaryDc") { } // namespace // The actor that actively monitors the health of local and peer servers, and reports anomaly to the cluster controller. -ACTOR Future healthMonitor(Reference>> ccInterface, +ACTOR Future healthMonitor(Reference> const> ccInterface, WorkerInterface interf, LocalityData locality, - Reference> dbInfo) { + Reference const> dbInfo) { loop { Future nextHealthCheckDelay = Never(); if (dbInfo->get().recoveryState >= RecoveryState::ACCEPTING_COMMITS && @@ -1212,7 +1212,7 @@ struct SharedLogsValue { }; ACTOR Future workerServer(Reference connFile, - Reference>> ccInterface, + Reference> const> ccInterface, LocalityData locality, Reference> asyncPriorityInfo, ProcessClass initialClass, From 52a64eb04be8c77c1de2ee943592de09d4259d80 Mon Sep 17 00:00:00 2001 From: sfc-gh-tclinkenbeard Date: Sat, 14 Aug 2021 17:41:57 -0700 Subject: [PATCH 2/2] Improve const-correctness for AsyncVar references --- fdbserver/TesterInterface.actor.h | 2 +- fdbserver/WorkerInterface.actor.h | 5 +++-- fdbserver/tester.actor.cpp | 8 ++++---- fdbserver/worker.actor.cpp | 18 +++++++++--------- fdbserver/workloads/ReadWrite.actor.cpp | 2 +- fdbserver/workloads/workloads.actor.h | 2 +- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/fdbserver/TesterInterface.actor.h b/fdbserver/TesterInterface.actor.h index 8320cc566b..3874ff134d 100644 --- a/fdbserver/TesterInterface.actor.h +++ b/fdbserver/TesterInterface.actor.h @@ -114,7 +114,7 @@ struct TesterInterface { ACTOR Future testerServerCore(TesterInterface interf, Reference ccf, - Reference> serverDBInfo, + Reference const> serverDBInfo, LocalityData locality); enum test_location_t { TEST_HERE, TEST_ON_SERVERS, TEST_ON_TESTERS }; diff --git a/fdbserver/WorkerInterface.actor.h b/fdbserver/WorkerInterface.actor.h index b1ee9e1728..7227172b1f 100644 --- a/fdbserver/WorkerInterface.actor.h +++ b/fdbserver/WorkerInterface.actor.h @@ -880,8 +880,9 @@ class Database openDBOnServer(Reference const> const& db, TaskPriority taskID = TaskPriority::DefaultEndpoint, LockAware = LockAware::False, EnableLocalityLoadBalance = EnableLocalityLoadBalance::True); -ACTOR Future extractClusterInterface(Reference>> a, - Reference>> b); +ACTOR Future extractClusterInterface( + Reference> const> in, + Reference>> out); ACTOR Future fdbd(Reference ccf, LocalityData localities, diff --git a/fdbserver/tester.actor.cpp b/fdbserver/tester.actor.cpp index 33cce419de..a4f382cb18 100644 --- a/fdbserver/tester.actor.cpp +++ b/fdbserver/tester.actor.cpp @@ -315,7 +315,7 @@ struct CompoundWorkload : TestWorkload { TestWorkload* getWorkloadIface(WorkloadRequest work, VectorRef options, - Reference> dbInfo) { + Reference const> dbInfo) { Value testName = getOption(options, LiteralStringRef("testName"), LiteralStringRef("no-test-specified")); WorkloadContext wcx; wcx.clientId = work.clientId; @@ -350,7 +350,7 @@ TestWorkload* getWorkloadIface(WorkloadRequest work, return workload; } -TestWorkload* getWorkloadIface(WorkloadRequest work, Reference> dbInfo) { +TestWorkload* getWorkloadIface(WorkloadRequest work, Reference const> dbInfo) { if (work.options.size() < 1) { TraceEvent(SevError, "TestCreationError").detail("Reason", "No options provided"); fprintf(stderr, "ERROR: No options were provided for workload.\n"); @@ -602,7 +602,7 @@ ACTOR Future runWorkloadAsync(Database cx, ACTOR Future testerServerWorkload(WorkloadRequest work, Reference ccf, - Reference> dbInfo, + Reference const> dbInfo, LocalityData locality) { state WorkloadInterface workIface; state bool replied = false; @@ -661,7 +661,7 @@ ACTOR Future testerServerWorkload(WorkloadRequest work, ACTOR Future testerServerCore(TesterInterface interf, Reference ccf, - Reference> dbInfo, + Reference const> dbInfo, LocalityData locality) { state PromiseStream> addWorkload; state Future workerFatalError = actorCollection(addWorkload.getFuture()); diff --git a/fdbserver/worker.actor.cpp b/fdbserver/worker.actor.cpp index f35cdd1aa6..1933858820 100644 --- a/fdbserver/worker.actor.cpp +++ b/fdbserver/worker.actor.cpp @@ -959,7 +959,7 @@ ACTOR Future storageServerRollbackRebooter(std::set> db, + Reference const> db, std::string folder, ActorCollection* filesClosed, int64_t memoryLimit, @@ -1006,7 +1006,7 @@ ACTOR Future storageServerRollbackRebooter(std::set storageCacheRollbackRebooter(Future prevStorageCache, UID id, LocalityData locality, - Reference> db) { + Reference const> db) { loop { ErrorOr e = wait(errorOr(prevStorageCache)); if (!e.isError()) { @@ -2044,14 +2044,14 @@ ACTOR Future workerServer(Reference connFile, } } -ACTOR Future extractClusterInterface(Reference>> a, - Reference>> b) { +ACTOR Future extractClusterInterface(Reference> const> in, + Reference>> out) { loop { - if (a->get().present()) - b->set(a->get().get().clientInterface); + if (in->get().present()) + out->set(in->get().get().clientInterface); else - b->set(Optional()); - wait(a->onChange()); + out->set(Optional()); + wait(in->onChange()); } } @@ -2086,7 +2086,7 @@ ACTOR Future printTimeout() { return Void(); } -ACTOR Future printOnFirstConnected(Reference>> ci) { +ACTOR Future printOnFirstConnected(Reference> const> ci) { state Future timeoutFuture = printTimeout(); loop { choose { diff --git a/fdbserver/workloads/ReadWrite.actor.cpp b/fdbserver/workloads/ReadWrite.actor.cpp index c1ef14fc4c..edd2c3cfec 100644 --- a/fdbserver/workloads/ReadWrite.actor.cpp +++ b/fdbserver/workloads/ReadWrite.actor.cpp @@ -224,7 +224,7 @@ struct ReadWriteWorkload : KVWorkload { Future setup(Database const& cx) override { return _setup(cx, this); } Future start(Database const& cx) override { return _start(cx, this); } - ACTOR static Future traceDumpWorkers(Reference> db) { + ACTOR static Future traceDumpWorkers(Reference const> db) { try { loop { choose { diff --git a/fdbserver/workloads/workloads.actor.h b/fdbserver/workloads/workloads.actor.h index 702a408968..2ad0ba0134 100644 --- a/fdbserver/workloads/workloads.actor.h +++ b/fdbserver/workloads/workloads.actor.h @@ -49,7 +49,7 @@ struct WorkloadContext { Standalone> options; int clientId, clientCount; int64_t sharedRandomNumber; - Reference> dbInfo; + Reference const> dbInfo; WorkloadContext(); WorkloadContext(const WorkloadContext&);