Skip to content

Commit

Permalink
Merge pull request #1086 from cloudflare/maizatskyi/2023-08-29-co_awa…
Browse files Browse the repository at this point in the history
…it-fork

co_await forks without creating new branch
  • Loading branch information
mikea committed Aug 31, 2023
2 parents f090ce9 + 848946a commit 824269a
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 15 deletions.
6 changes: 3 additions & 3 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ bazel_skylib_workspace()

http_archive(
name = "capnp-cpp",
sha256 = "3078dff4cc99f656cf7eac71180717973751d136ee16afaef998ed527e37fe2f",
strip_prefix = "capnproto-capnproto-93da777/c++",
sha256 = "0b9b07d26dd7ea2eff3ec05757c0ae745e9c813941e06fcdcb93d6e4d2750d01",
strip_prefix = "capnproto-capnproto-24f476f/c++",
type = "tgz",
urls = ["https://github.com/capnproto/capnproto/tarball/93da77776dd3fa3d258cc3de49fc0c948ea38019"],
urls = ["https://github.com/capnproto/capnproto/tarball/24f476fcdb3019135eb00ac7787d0a0f1985f897"],
)

http_archive(
Expand Down
10 changes: 5 additions & 5 deletions src/workerd/io/worker-interface.c++
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public:
KJ_IF_MAYBE(w, worker) {
co_await w->get()->request(method, url, headers, requestBody, response);
} else {
co_await promise.addBranch();
co_await promise;
co_await KJ_ASSERT_NONNULL(worker)->request(method, url, headers, requestBody, response);
}
}
Expand All @@ -38,7 +38,7 @@ public:
KJ_IF_MAYBE(w, worker) {
co_await w->get()->connect(host, headers, connection, response, kj::mv(settings));
} else {
co_await promise.addBranch();
co_await promise;
co_await KJ_ASSERT_NONNULL(worker)->connect(
host, headers, connection, response, kj::mv(settings));
}
Expand All @@ -65,7 +65,7 @@ public:
KJ_IF_MAYBE(w, worker) {
co_return co_await w->get()->runScheduled(scheduledTime, cron);
} else {
co_await promise.addBranch();
co_await promise;
co_return co_await KJ_ASSERT_NONNULL(worker)->runScheduled(scheduledTime, cron);
}
}
Expand All @@ -74,7 +74,7 @@ public:
KJ_IF_MAYBE(w, worker) {
co_return co_await w->get()->runAlarm(scheduledTime);
} else {
co_await promise.addBranch();
co_await promise;
co_return co_await KJ_ASSERT_NONNULL(worker)->runAlarm(scheduledTime);
}
}
Expand All @@ -83,7 +83,7 @@ public:
KJ_IF_MAYBE(w, worker) {
co_return co_await w->get()->customEvent(kj::mv(event));
} else {
co_await promise.addBranch();
co_await promise;
co_return co_await KJ_ASSERT_NONNULL(worker)->customEvent(kj::mv(event));
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/workerd/io/worker.c++
Original file line number Diff line number Diff line change
Expand Up @@ -1930,7 +1930,7 @@ kj::Promise<Worker::AsyncLock> Worker::Isolate::takeAsyncLockImpl(
threadWaitingDifferentLockCount);
}
auto newWaiter = kj::refcounted<AsyncWaiter>(kj::atomicAddRef(*this));
co_await newWaiter->readyPromise.addBranch();
co_await newWaiter->readyPromise;
co_return AsyncLock(kj::mv(newWaiter), kj::mv(lockTiming));
} else if (waiter->isolate == this) {
// Thread is waiting on a lock already, and it's for the same isolate. We can coalesce the
Expand All @@ -1941,7 +1941,7 @@ kj::Promise<Worker::AsyncLock> Worker::Isolate::takeAsyncLockImpl(
threadWaitingDifferentLockCount);
}
auto newWaiterRef = kj::addRef(*waiter);
co_await newWaiterRef->readyPromise.addBranch();
co_await newWaiterRef->readyPromise;
co_return AsyncLock(kj::mv(newWaiterRef), kj::mv(lockTiming));
} else {
// Thread is already waiting for or holding a different isolate lock. Wait for that one to
Expand All @@ -1951,7 +1951,7 @@ kj::Promise<Worker::AsyncLock> Worker::Isolate::takeAsyncLockImpl(
KJ_IF_MAYBE(lt, lockTiming) {
lt->get()->waitingForOtherIsolate(waiter->isolate->getId());
}
co_await waiter->releasePromise.addBranch();
co_await waiter->releasePromise;
}
}
}
Expand Down Expand Up @@ -2030,7 +2030,7 @@ Worker::AsyncWaiter::~AsyncWaiter() noexcept {
kj::Promise<void> Worker::AsyncLock::whenThreadIdle() {
for (;;) {
if (auto waiter = AsyncWaiter::threadCurrentWaiter; waiter != nullptr) {
co_await waiter->releasePromise.addBranch();
co_await waiter->releasePromise;
continue;
}

Expand Down Expand Up @@ -3219,7 +3219,7 @@ auto Worker::Actor::scheduleAlarm(kj::Date scheduledTime) -> kj::Promise<Schedul
KJ_IF_MAYBE(runningAlarm, impl->maybeRunningAlarm) {
if (runningAlarm->scheduledTime == scheduledTime) {
// The running alarm has the same time, we can just wait for it.
auto result = co_await runningAlarm->resultPromise.addBranch();
auto result = co_await runningAlarm->resultPromise;
co_return result;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/workerd/server/server.c++
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ public:
KJ_IF_MAYBE(a, addr) {
co_return co_await a->get()->connect();
} else {
co_await promise.addBranch();
co_await promise;
co_return co_await KJ_ASSERT_NONNULL(addr)->connect();
}
}
Expand All @@ -476,7 +476,7 @@ public:
KJ_IF_MAYBE(a, addr) {
co_return co_await a->get()->connectAuthenticated();
} else {
co_await promise.addBranch();
co_await promise;
co_return co_await KJ_ASSERT_NONNULL(addr)->connectAuthenticated();
}
}
Expand Down

0 comments on commit 824269a

Please sign in to comment.