Skip to content

Commit c025fe6

Browse files
authored
Revert "Merge pull request #22 from FoundationDB/cpp-continuation" (#30)
1 parent bbf194b commit c025fe6

File tree

10 files changed

+553
-595
lines changed

10 files changed

+553
-595
lines changed

fdbserver/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ add_library(fdbserver_swift STATIC
3232
UID.swift
3333
# tests
3434
swift/tests/Rainbow.swift
35-
swift/tests/swift_tests.swift
36-
swift/tests/swift_test_task.swift
3735
swift/tests/swift_test_streams.swift
3836
)
3937

fdbserver/masterserver.actor.cpp

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,28 @@
3838

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

41+
Version figureVersion(Version current,
42+
double now,
43+
Version reference,
44+
int64_t toAdd,
45+
double maxVersionRateModifier,
46+
int64_t maxVersionRateOffset) {
47+
// Versions should roughly follow wall-clock time, based on the
48+
// system clock of the current machine and an FDB-specific epoch.
49+
// Calculate the expected version and determine whether we need to
50+
// hand out versions faster or slower to stay in sync with the
51+
// clock.
52+
Version expected = now * SERVER_KNOBS->VERSIONS_PER_SECOND - reference;
53+
54+
// Attempt to jump directly to the expected version. But make
55+
// sure that versions are still being handed out at a rate
56+
// around VERSIONS_PER_SECOND. This rate is scaled depending on
57+
// how far off the calculated version is from the expected
58+
// version.
59+
int64_t maxOffset = std::min(static_cast<int64_t>(toAdd * maxVersionRateModifier), maxVersionRateOffset);
60+
return std::clamp(expected, current + toAdd - maxOffset, current + toAdd + maxOffset);
61+
}
62+
4163
ACTOR Future<Void> getVersion(Reference<MasterData> self, GetCommitVersionRequest req) {
4264
// TODO: we likely can pre-bake something to make these calls easier, without the explicit Promise creation
4365
auto promise = Promise<Void>();
@@ -340,34 +362,34 @@ ACTOR Future<Void> masterServer(MasterInterface mi,
340362

341363
TEST_CASE("/fdbserver/MasterServer/FigureVersion/Simple") {
342364
ASSERT_EQ(
343-
fdbserver_swift::figureVersion(0, 1.0, 0, 1e6, SERVER_KNOBS->MAX_VERSION_RATE_MODIFIER, SERVER_KNOBS->MAX_VERSION_RATE_OFFSET),
365+
figureVersion(0, 1.0, 0, 1e6, SERVER_KNOBS->MAX_VERSION_RATE_MODIFIER, SERVER_KNOBS->MAX_VERSION_RATE_OFFSET),
344366
1e6);
345-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 1.5, 0, 100, 0.1, 1e6), 1000110);
346-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 1.5, 0, 550000, 0.1, 1e6), 1500000);
367+
ASSERT_EQ(figureVersion(1e6, 1.5, 0, 100, 0.1, 1e6), 1000110);
368+
ASSERT_EQ(figureVersion(1e6, 1.5, 0, 550000, 0.1, 1e6), 1500000);
347369
return Void();
348370
}
349371

350372
TEST_CASE("/fdbserver/MasterServer/FigureVersion/Small") {
351373
// Should always advance by at least 1 version.
352-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 2.0, 0, 1, 0.0001, 1e6), 1000001);
353-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 0.0, 0, 1, 0.1, 1e6), 1000001);
374+
ASSERT_EQ(figureVersion(1e6, 2.0, 0, 1, 0.0001, 1e6), 1000001);
375+
ASSERT_EQ(figureVersion(1e6, 0.0, 0, 1, 0.1, 1e6), 1000001);
354376
return Void();
355377
}
356378

357379
TEST_CASE("/fdbserver/MasterServer/FigureVersion/MaxOffset") {
358-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 10.0, 0, 5e6, 0.1, 1e6), 6500000);
359-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 20.0, 0, 15e6, 0.1, 1e6), 17e6);
380+
ASSERT_EQ(figureVersion(1e6, 10.0, 0, 5e6, 0.1, 1e6), 6500000);
381+
ASSERT_EQ(figureVersion(1e6, 20.0, 0, 15e6, 0.1, 1e6), 17e6);
360382
return Void();
361383
}
362384

363385
TEST_CASE("/fdbserver/MasterServer/FigureVersion/PositiveReferenceVersion") {
364-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 3.0, 1e6, 1e6, 0.1, 1e6), 2e6);
365-
ASSERT_EQ(fdbserver_swift::figureVersion(1e6, 3.0, 1e6, 100, 0.1, 1e6), 1000110);
386+
ASSERT_EQ(figureVersion(1e6, 3.0, 1e6, 1e6, 0.1, 1e6), 2e6);
387+
ASSERT_EQ(figureVersion(1e6, 3.0, 1e6, 100, 0.1, 1e6), 1000110);
366388
return Void();
367389
}
368390

369391
TEST_CASE("/fdbserver/MasterServer/FigureVersion/NegativeReferenceVersion") {
370-
ASSERT_EQ(fdbserver_swift::figureVersion(0, 2.0, -1e6, 3e6, 0.1, 1e6), 3e6);
371-
ASSERT_EQ(fdbserver_swift::figureVersion(0, 2.0, -1e6, 5e5, 0.1, 1e6), 550000);
392+
ASSERT_EQ(figureVersion(0, 2.0, -1e6, 3e6, 0.1, 1e6), 3e6);
393+
ASSERT_EQ(figureVersion(0, 2.0, -1e6, 5e5, 0.1, 1e6), 550000);
372394
return Void();
373395
}

fdbserver/masterserver.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ extension Swift.Optional where Wrapped == Version {
2121
}
2222
}
2323

24-
@_expose(Cxx)
25-
public func figureVersion(current: Version,
24+
func figureVersion(current: Version,
2625
now: Double,
2726
reference: Version,
2827
toAdd: Int64,

fdbserver/swift/tests/swift_test_streams.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,25 @@ import flow_swift
2323
import FlowFutureSupport
2424
import flow_swift_future
2525

26+
@_expose(Cxx)
27+
public func swiftyTestRunner(p: PromiseVoid) {
28+
print("[swift] \(#function), go!".green)
29+
30+
Task {
31+
do {
32+
await swift_flow_trivial_promisestreams()
33+
try await swift_flow_trivial_promisestreams_asyncSequence()
34+
} catch {
35+
print("[swift][\(#function)] TEST THREW: \(error)")
36+
}
37+
38+
var void = Flow.Void()
39+
p.send(&void)
40+
}
41+
}
42+
2643
/// Corresponds to FlowTests.actor.cpp "/flow/flow/trivial promisestreams"
27-
func swift_flow_trivial_promisestreams() async throws {
44+
func swift_flow_trivial_promisestreams() async {
2845
print("[swift] Test: \(#function) ------------------------------------------------------------".yellow)
2946
defer { print("[swift] Finished: \(#function) ------------------------------------------------------------".green) }
3047

fdbserver/swift/tests/swift_test_task.swift

Lines changed: 0 additions & 91 deletions
This file was deleted.

fdbserver/swift/tests/swift_tests.swift

Lines changed: 0 additions & 53 deletions
This file was deleted.

flow/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ add_library(flow_swift STATIC
116116
FlowCheckedContinuation.swift
117117
stream_support.swift
118118
error_support.swift
119-
task_priority_support.swift
120119
SwiftBridging.swift
121120
SwiftFileB.swift)
122121

0 commit comments

Comments
 (0)