Several bugfixes to make fdb build on non-ide

This commit is contained in:
mpilman 2019-02-17 21:59:55 -08:00 committed by Alex Miller
parent 6c1f64ed22
commit f79a9594c1
5 changed files with 37 additions and 27 deletions

View File

@ -21,7 +21,7 @@
#pragma once
#if defined(NO_INTELLISENSE) && !defined(FDBCLIENT_BACKUP_AGENT_ACTOR_G_H)
#define FDBCLIENT_BACKUP_AGENT_ACTOR_G_H
#include "fdbclient/BackupAgent.actor.h"
#include "fdbclient/BackupAgent.actor.g.h"
#elif !defined(FDBCLIENT_BACKUP_AGENT_ACTOR_H)
#define FDBCLIENT_BACKUP_AGENT_ACTOR_H

View File

@ -43,6 +43,12 @@
#define THIS_ADDR 0
#endif
#ifdef NO_INTELLISENSE
#define THIS this
#else
#define THIS nullptr
#endif
static std::string boolToYesOrNo(bool val) { return val ? std::string("Yes") : std::string("No"); }
static std::string versionToString(Optional<Version> version) {
@ -1348,14 +1354,15 @@ namespace fileBackup {
// The dispatch of this batch can take multiple separate executions if the executor fails
// so store a completion key for the dispatch finish() to set when dispatching the batch is done.
state TaskCompletionKey dispatchCompletionKey = TaskCompletionKey::joinWith(snapshotBatchFuture);
wait(map(dispatchCompletionKey.get(tr, taskBucket), [=](Key const& k) {
#ifdef NO_INTELLISENSE
config.snapshotBatchDispatchDoneKey().set(tr, k);
#endif
return Void();
}));
wait(tr->commit());
// this is a bad hack - but flow doesn't work well with lambda functions and caputring
// state variables...
auto cfg = &config;
auto tx = &tr;
wait(map(dispatchCompletionKey.get(tr, taskBucket), [cfg, tx](Key const& k) {
cfg->snapshotBatchDispatchDoneKey().set(*tx, k);
return Void();
}));
wait(tr->commit());
}
else {
ASSERT(snapshotBatchSize.present());
@ -3235,9 +3242,7 @@ namespace fileBackup {
ERestoreState oldState = wait(restore.stateEnum().getD(tr));
if(oldState != ERestoreState::QUEUED && oldState != ERestoreState::STARTING) {
#ifdef NO_INTELLISENSE
wait(restore.logError(cx, restore_error(), format("StartFullRestore: Encountered unexpected state(%d)", oldState), this));
#endif
wait(restore.logError(cx, restore_error(), format("StartFullRestore: Encountered unexpected state(%d)", oldState), THIS));
return Void();
}
restore.stateEnum().set(tr, ERestoreState::STARTING);
@ -3324,9 +3329,7 @@ namespace fileBackup {
state Version firstVersion = Params.firstVersion().getOrDefault(task, invalidVersion);
if(firstVersion == invalidVersion) {
#ifdef NO_INTELLISENSE
wait(restore.logError(tr->getDatabase(), restore_missing_data(), "StartFullRestore: The backup had no data.", this));
#endif
wait(restore.logError(tr->getDatabase(), restore_missing_data(), "StartFullRestore: The backup had no data.", THIS));
std::string tag = wait(restore.tag().getD(tr));
wait(success(abortRestore(tr, StringRef(tag))));
return Void();

View File

@ -90,7 +90,7 @@ struct TesterInterface {
};
ACTOR Future<Void> testerServerCore(TesterInterface interf, Reference<ClusterConnectionFile> ccf,
Reference<AsyncVar<struct ServerDBInfo>>, LocalityData);
Reference<AsyncVar<struct ServerDBInfo>> serverDBInfo, LocalityData locality);
enum test_location_t { TEST_HERE, TEST_ON_SERVERS, TEST_ON_TESTERS };
enum test_type_t { TEST_TYPE_FROM_FILE, TEST_TYPE_CONSISTENCY_CHECK };

View File

@ -325,33 +325,37 @@ class Database openDBOnServer( Reference<AsyncVar<ServerDBInfo>> const& db, int
ACTOR Future<Void> extractClusterInterface(Reference<AsyncVar<Optional<struct ClusterControllerFullInterface>>> a,
Reference<AsyncVar<Optional<struct ClusterInterface>>> b);
ACTOR Future<Void> fdbd(Reference<ClusterConnectionFile>, LocalityData localities, ProcessClass processClass,
ACTOR Future<Void> fdbd(Reference<ClusterConnectionFile> ccf, LocalityData localities, ProcessClass processClass,
std::string dataFolder, std::string coordFolder, int64_t memoryLimit,
std::string metricsConnFile, std::string metricsPrefix);
ACTOR Future<Void> clusterController(Reference<ClusterConnectionFile>,
ACTOR Future<Void> clusterController(Reference<ClusterConnectionFile> ccf,
Reference<AsyncVar<Optional<ClusterControllerFullInterface>>> currentCC,
Reference<AsyncVar<ClusterControllerPriorityInfo>> asyncPriorityInfo,
Future<Void> recoveredDiskFiles, LocalityData locality);
// These servers are started by workerServer
ACTOR Future<Void> storageServer(class IKeyValueStore* persistentData, StorageServerInterface ssi, Tag seedTag,
class IKeyValueStore;
class ServerCoordinators;
class IDiskQueue;
ACTOR Future<Void> storageServer(IKeyValueStore* persistentData, StorageServerInterface ssi, Tag seedTag,
ReplyPromise<InitializeStorageReply> recruitReply,
Reference<AsyncVar<ServerDBInfo>> db, std::string folder);
ACTOR Future<Void> storageServer(class IKeyValueStore* persistentData, StorageServerInterface ssi,
ACTOR Future<Void> storageServer(IKeyValueStore* persistentData, StorageServerInterface ssi,
Reference<AsyncVar<ServerDBInfo>> db, std::string folder,
Promise<Void> recovered); // changes pssi->id() to be the recovered ID
ACTOR Future<Void> masterServer(MasterInterface mi, Reference<AsyncVar<ServerDBInfo>> db, class ServerCoordinators,
LifetimeToken lifetime, bool forceRecovery);
ACTOR Future<Void> masterServer(MasterInterface mi, Reference<AsyncVar<ServerDBInfo>> db,
ServerCoordinators serverCoordinators, LifetimeToken lifetime, bool forceRecovery);
ACTOR Future<Void> masterProxyServer(MasterProxyInterface proxy, InitializeMasterProxyRequest req,
Reference<AsyncVar<ServerDBInfo>> db);
ACTOR Future<Void> tLog(class IKeyValueStore* persistentData, class IDiskQueue* persistentQueue,
ACTOR Future<Void> tLog(IKeyValueStore* persistentData, IDiskQueue* persistentQueue,
Reference<AsyncVar<ServerDBInfo>> db, LocalityData locality,
PromiseStream<InitializeTLogRequest> tlogRequests, UID tlogId, bool restoreFromDisk,
Promise<Void> oldLog, Promise<Void> recovered); // changes tli->id() to be the recovered ID
ACTOR Future<Void> monitorServerDBInfo(Reference<AsyncVar<Optional<ClusterControllerFullInterface>>> ccInterface,
Reference<ClusterConnectionFile>, LocalityData,
Reference<ClusterConnectionFile> ccf, LocalityData locality,
Reference<AsyncVar<ServerDBInfo>> dbInfo);
ACTOR Future<Void> resolver(ResolverInterface proxy, InitializeResolverRequest, Reference<AsyncVar<ServerDBInfo>> db);
ACTOR Future<Void> resolver(ResolverInterface proxy, InitializeResolverRequest initReq,
Reference<AsyncVar<ServerDBInfo>> db);
ACTOR Future<Void> logRouter(TLogInterface interf, InitializeLogRouterRequest req,
Reference<AsyncVar<ServerDBInfo>> db);
ACTOR Future<Void> dataDistributor(DataDistributorInterface ddi, Reference<AsyncVar<ServerDBInfo>> db);

View File

@ -18,9 +18,12 @@
* limitations under the License.
*/
#ifndef FDBSERVER_WORKLOADS_H
#define FDBSERVER_WORKLOADS_H
#pragma once
#if defined(NO_INTELLISENSE) && !defined(FDBSERVER_WORKLOADS_ACTOR_G_H)
#define FDBSERVER_WORKLOADS_ACTOR_G_H
#include "fdbserver/workloads/workloads.actor.g.h"
#elif !defined(FDBSERVER_WORKLOADS_ACTOR_H)
#define FDBSERVER_WORKLOADS_ACTOR_H
#include "fdbclient/NativeAPI.actor.h"
#include "fdbclient/DatabaseContext.h" // for clone()