Skip to content

Commit

Permalink
Revert "Merge pull request #22 from FoundationDB/cpp-continuation" (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
ktoso committed Nov 14, 2022
1 parent bbf194b commit c025fe6
Show file tree
Hide file tree
Showing 10 changed files with 553 additions and 595 deletions.
2 changes: 0 additions & 2 deletions fdbserver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ add_library(fdbserver_swift STATIC
UID.swift
# tests
swift/tests/Rainbow.swift
swift/tests/swift_tests.swift
swift/tests/swift_test_task.swift
swift/tests/swift_test_streams.swift
)

Expand Down
44 changes: 33 additions & 11 deletions fdbserver/masterserver.actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,28 @@

#include "flow/actorcompiler.h" // This must be the last #include.

Version figureVersion(Version current,
double now,
Version reference,
int64_t toAdd,
double maxVersionRateModifier,
int64_t maxVersionRateOffset) {
// Versions should roughly follow wall-clock time, based on the
// system clock of the current machine and an FDB-specific epoch.
// Calculate the expected version and determine whether we need to
// hand out versions faster or slower to stay in sync with the
// clock.
Version expected = now * SERVER_KNOBS->VERSIONS_PER_SECOND - reference;

// Attempt to jump directly to the expected version. But make
// sure that versions are still being handed out at a rate
// around VERSIONS_PER_SECOND. This rate is scaled depending on
// how far off the calculated version is from the expected
// version.
int64_t maxOffset = std::min(static_cast<int64_t>(toAdd * maxVersionRateModifier), maxVersionRateOffset);
return std::clamp(expected, current + toAdd - maxOffset, current + toAdd + maxOffset);
}

ACTOR Future<Void> getVersion(Reference<MasterData> self, GetCommitVersionRequest req) {
// TODO: we likely can pre-bake something to make these calls easier, without the explicit Promise creation
auto promise = Promise<Void>();
Expand Down Expand Up @@ -340,34 +362,34 @@ ACTOR Future<Void> masterServer(MasterInterface mi,

TEST_CASE("/fdbserver/MasterServer/FigureVersion/Simple") {
ASSERT_EQ(
fdbserver_swift::figureVersion(0, 1.0, 0, 1e6, SERVER_KNOBS->MAX_VERSION_RATE_MODIFIER, SERVER_KNOBS->MAX_VERSION_RATE_OFFSET),
figureVersion(0, 1.0, 0, 1e6, SERVER_KNOBS->MAX_VERSION_RATE_MODIFIER, SERVER_KNOBS->MAX_VERSION_RATE_OFFSET),
1e6);
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 1.5, 0, 100, 0.1, 1e6), 1000110);
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 1.5, 0, 550000, 0.1, 1e6), 1500000);
ASSERT_EQ(figureVersion(1e6, 1.5, 0, 100, 0.1, 1e6), 1000110);
ASSERT_EQ(figureVersion(1e6, 1.5, 0, 550000, 0.1, 1e6), 1500000);
return Void();
}

TEST_CASE("/fdbserver/MasterServer/FigureVersion/Small") {
// Should always advance by at least 1 version.
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 2.0, 0, 1, 0.0001, 1e6), 1000001);
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 0.0, 0, 1, 0.1, 1e6), 1000001);
ASSERT_EQ(figureVersion(1e6, 2.0, 0, 1, 0.0001, 1e6), 1000001);
ASSERT_EQ(figureVersion(1e6, 0.0, 0, 1, 0.1, 1e6), 1000001);
return Void();
}

TEST_CASE("/fdbserver/MasterServer/FigureVersion/MaxOffset") {
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 10.0, 0, 5e6, 0.1, 1e6), 6500000);
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 20.0, 0, 15e6, 0.1, 1e6), 17e6);
ASSERT_EQ(figureVersion(1e6, 10.0, 0, 5e6, 0.1, 1e6), 6500000);
ASSERT_EQ(figureVersion(1e6, 20.0, 0, 15e6, 0.1, 1e6), 17e6);
return Void();
}

TEST_CASE("/fdbserver/MasterServer/FigureVersion/PositiveReferenceVersion") {
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 3.0, 1e6, 1e6, 0.1, 1e6), 2e6);
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 3.0, 1e6, 100, 0.1, 1e6), 1000110);
ASSERT_EQ(figureVersion(1e6, 3.0, 1e6, 1e6, 0.1, 1e6), 2e6);
ASSERT_EQ(figureVersion(1e6, 3.0, 1e6, 100, 0.1, 1e6), 1000110);
return Void();
}

TEST_CASE("/fdbserver/MasterServer/FigureVersion/NegativeReferenceVersion") {
ASSERT_EQ(fdbserver_swift::figureVersion(0, 2.0, -1e6, 3e6, 0.1, 1e6), 3e6);
ASSERT_EQ(fdbserver_swift::figureVersion(0, 2.0, -1e6, 5e5, 0.1, 1e6), 550000);
ASSERT_EQ(figureVersion(0, 2.0, -1e6, 3e6, 0.1, 1e6), 3e6);
ASSERT_EQ(figureVersion(0, 2.0, -1e6, 5e5, 0.1, 1e6), 550000);
return Void();
}
3 changes: 1 addition & 2 deletions fdbserver/masterserver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ extension Swift.Optional where Wrapped == Version {
}
}

@_expose(Cxx)
public func figureVersion(current: Version,
func figureVersion(current: Version,
now: Double,
reference: Version,
toAdd: Int64,
Expand Down
19 changes: 18 additions & 1 deletion fdbserver/swift/tests/swift_test_streams.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,25 @@ import flow_swift
import FlowFutureSupport
import flow_swift_future

@_expose(Cxx)
public func swiftyTestRunner(p: PromiseVoid) {
print("[swift] \(#function), go!".green)

Task {
do {
await swift_flow_trivial_promisestreams()
try await swift_flow_trivial_promisestreams_asyncSequence()
} catch {
print("[swift][\(#function)] TEST THREW: \(error)")
}

var void = Flow.Void()
p.send(&void)
}
}

/// Corresponds to FlowTests.actor.cpp "/flow/flow/trivial promisestreams"
func swift_flow_trivial_promisestreams() async throws {
func swift_flow_trivial_promisestreams() async {
print("[swift] Test: \(#function) ------------------------------------------------------------".yellow)
defer { print("[swift] Finished: \(#function) ------------------------------------------------------------".green) }

Expand Down
91 changes: 0 additions & 91 deletions fdbserver/swift/tests/swift_test_task.swift

This file was deleted.

53 changes: 0 additions & 53 deletions fdbserver/swift/tests/swift_tests.swift

This file was deleted.

1 change: 0 additions & 1 deletion flow/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ add_library(flow_swift STATIC
FlowCheckedContinuation.swift
stream_support.swift
error_support.swift
task_priority_support.swift
SwiftBridging.swift
SwiftFileB.swift)

Expand Down
Loading

0 comments on commit c025fe6

Please sign in to comment.