Merge branch 'master' of https://github.com/apple/foundationdb into fdbtest
This commit is contained in:
commit
9947b416ee
|
@ -6,7 +6,7 @@ FoundationDB makes your architecture flexible and easy to operate. Your applicat
|
|||
|
||||
The following diagram details the logical architecture.
|
||||
|
||||
.. image:: /images/Architecture.png
|
||||
|image0|
|
||||
|
||||
|
||||
Detailed FoundationDB Architecture
|
||||
|
@ -362,6 +362,7 @@ Documentation <https://github.com/apple/foundationdb/blob/master/design/data-dis
|
|||
`Recovery
|
||||
Documentation <https://github.com/apple/foundationdb/blob/master/design/recovery-internals.md>`__
|
||||
|
||||
.. |image0| image:: images/Architecture.png
|
||||
.. |image1| image:: images/architecture-1.jpeg
|
||||
.. |image2| image:: images/architecture-2.jpeg
|
||||
.. |image3| image:: images/architecture-3.jpeg
|
||||
|
|
|
@ -234,17 +234,17 @@ public:
|
|||
ACTOR static Future<bool> taskVerify(Reference<TaskBucket> tb, Reference<ReadYourWritesTransaction> tr, Reference<Task> task) {
|
||||
|
||||
if (task->params.find(Task::reservedTaskParamValidKey) == task->params.end()) {
|
||||
TraceEvent("TB_TaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", "missing");
|
||||
TraceEvent("TaskBucketTaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", "missing");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (task->params.find(Task::reservedTaskParamValidValue) == task->params.end()) {
|
||||
TraceEvent("TB_TaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", "missing");
|
||||
TraceEvent("TaskBucketTaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", "missing");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -253,20 +253,20 @@ public:
|
|||
Optional<Value> keyValue = wait(tr->get(task->params[Task::reservedTaskParamValidKey]));
|
||||
|
||||
if (!keyValue.present()) {
|
||||
TraceEvent("TB_TaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", task->params[Task::reservedTaskParamValidValue])
|
||||
.detail("KeyValue", "missing");
|
||||
TraceEvent("TaskBucketTaskVerifyInvalidTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", task->params[Task::reservedTaskParamValidValue])
|
||||
.detail("KeyValue", "missing");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (keyValue.get().compare(StringRef(task->params[Task::reservedTaskParamValidValue]))) {
|
||||
TraceEvent("TB_TaskVerifyAbortedTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", task->params[Task::reservedTaskParamValidValue])
|
||||
.detail("KeyValue", keyValue.get());
|
||||
TraceEvent("TaskBucketTaskVerifyAbortedTask")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ReservedTaskParamValidKey", task->params[Task::reservedTaskParamValidKey])
|
||||
.detail("ReservedTaskParamValidValue", task->params[Task::reservedTaskParamValidValue])
|
||||
.detail("KeyValue", keyValue.get());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -332,10 +332,10 @@ public:
|
|||
|
||||
if(now() - start > 300) {
|
||||
TraceEvent(SevWarnAlways, "TaskBucketLongExtend")
|
||||
.detail("Duration", now() - start)
|
||||
.detail("TaskUID", task->key)
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("Priority", task->getPriority());
|
||||
.detail("Duration", now() - start)
|
||||
.detail("TaskUID", task->key)
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("Priority", task->getPriority());
|
||||
}
|
||||
// Take the extendMutex lock until we either succeed or stop trying to extend due to failure
|
||||
wait(task->extendMutex.take());
|
||||
|
@ -402,19 +402,19 @@ public:
|
|||
}));
|
||||
}
|
||||
} catch(Error &e) {
|
||||
TraceEvent(SevWarn, "TB_ExecuteFailure")
|
||||
.error(e)
|
||||
.detail("TaskUID", task->key)
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType].printable())
|
||||
.detail("Priority", task->getPriority());
|
||||
TraceEvent(SevWarn, "TaskBucketExecuteFailure")
|
||||
.error(e)
|
||||
.detail("TaskUID", task->key)
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType].printable())
|
||||
.detail("Priority", task->getPriority());
|
||||
try {
|
||||
wait(taskFunc->handleError(cx, task, e));
|
||||
} catch(Error &e) {
|
||||
TraceEvent(SevWarn, "TB_ExecuteFailureLogErrorFailed")
|
||||
.error(e) // output handleError() error instead of original task error
|
||||
.detail("TaskUID", task->key.printable())
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType].printable())
|
||||
.detail("Priority", task->getPriority());
|
||||
TraceEvent(SevWarn, "TaskBucketExecuteFailureLogErrorFailed")
|
||||
.error(e) // output handleError() error instead of original task error
|
||||
.detail("TaskUID", task->key.printable())
|
||||
.detail("TaskType", task->params[Task::reservedTaskParamKeyType].printable())
|
||||
.detail("Priority", task->getPriority());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -727,14 +727,17 @@ public:
|
|||
tr->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
|
||||
tr->setOption(FDBTransactionOptions::LOCK_AWARE);
|
||||
Standalone<RangeResultRef> values = wait(tr->getRange(subspace.range(), CLIENT_KNOBS->TOO_MANY));
|
||||
TraceEvent("TaskBucket").detail("DebugPrintRange", "Print DB Range").detail("Key", subspace.key()).detail("Count", values.size()).detail("Msg", msg);
|
||||
|
||||
TraceEvent("TaskBucketDebugPrintRange")
|
||||
.detail("Key", subspace.key())
|
||||
.detail("Count", values.size())
|
||||
.detail("Msg", msg);
|
||||
|
||||
/*printf("debugPrintRange key: (%d) %s\n", values.size(), printable(subspace.key()).c_str());
|
||||
for (auto & s : values) {
|
||||
printf(" key: %-40s value: %s\n", printable(s.key).c_str(), s.value.c_str());
|
||||
TraceEvent("TaskBucket").detail("DebugPrintRange", msg)
|
||||
.detail("Key", s.key)
|
||||
.detail("Value", s.value);
|
||||
printf(" key: %-40s value: %s\n", printable(s.key).c_str(), s.value.c_str());
|
||||
TraceEvent("TaskBucketDebugPrintKV").detail("Msg", msg)
|
||||
.detail("Key", s.key)
|
||||
.detail("Value", s.value);
|
||||
}*/
|
||||
|
||||
return Void();
|
||||
|
@ -870,9 +873,9 @@ ACTOR static Future<Key> actorAddTask(TaskBucket* tb, Reference<ReadYourWritesTr
|
|||
Optional<Value> validationValue = wait(tr->get(validationKey));
|
||||
|
||||
if (!validationValue.present()) {
|
||||
TraceEvent(SevError, "TB_AddTaskInvalidKey")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ValidationKey", validationKey);
|
||||
TraceEvent(SevError, "TaskBucketAddTaskInvalidKey")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ValidationKey", validationKey);
|
||||
throw invalid_option_value();
|
||||
}
|
||||
|
||||
|
@ -1138,9 +1141,9 @@ public:
|
|||
Optional<Value> validationValue = wait(tr->get(validationKey));
|
||||
|
||||
if (!validationValue.present()) {
|
||||
TraceEvent(SevError, "TB_OnSetAddTaskInvalidKey")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ValidationKey", validationKey);
|
||||
TraceEvent(SevError, "TaskBucketOnSetAddTaskInvalidKey")
|
||||
.detail("Task", task->params[Task::reservedTaskParamKeyType])
|
||||
.detail("ValidationKey", validationKey);
|
||||
throw invalid_option_value();
|
||||
}
|
||||
|
||||
|
|
|
@ -1181,8 +1181,14 @@ struct FuzzApiCorrectnessWorkload : TestWorkload {
|
|||
}
|
||||
op = deterministicRandom()->randomInt(minval, maxval+1);
|
||||
}
|
||||
if(op == FDBTransactionOptions::ACCESS_SYSTEM_KEYS || op == FDBTransactionOptions::READ_SYSTEM_KEYS) //do not test access system keys since the option is actually used by the workload
|
||||
|
||||
//do not test the following options since they are actually used by the workload
|
||||
if(op == FDBTransactionOptions::ACCESS_SYSTEM_KEYS ||
|
||||
op == FDBTransactionOptions::READ_SYSTEM_KEYS ||
|
||||
op == FDBTransactionOptions::SPECIAL_KEY_SPACE_ENABLE_WRITES)
|
||||
{
|
||||
op = -1;
|
||||
}
|
||||
|
||||
double orv = deterministicRandom()->random01();
|
||||
if (orv >= 0.25) {
|
||||
|
|
|
@ -156,7 +156,7 @@ void recordAllocation( void *ptr, size_t size ) {
|
|||
|
||||
uint32_t a = 0;
|
||||
if( nptrs > 0 ) {
|
||||
a = crc32c_append( 0xfdbeefdb, buffer, nptrs * sizeof(void *));
|
||||
a = crc32c_append( 0xfdbeefdb, reinterpret_cast<uint8_t*>(buffer), nptrs * sizeof(void *));
|
||||
}
|
||||
|
||||
double countDelta = std::max(1.0, ((double)SAMPLE_BYTES) / size);
|
||||
|
|
Loading…
Reference in New Issue