diff --git a/src/workerd/io/observer.h b/src/workerd/io/observer.h index 9b439fd6a49..2af08161985 100644 --- a/src/workerd/io/observer.h +++ b/src/workerd/io/observer.h @@ -74,6 +74,9 @@ class RequestObserver: public kj::Refcounted { class IsolateObserver: public kj::AtomicRefcounted { public: + virtual void created(kj::StringPtr id) {}; + // Called when Worker::Isolate is created. + virtual void evicted() {} // Called when the owning Worker::Script is being destroyed. The IsolateObserver may // live a while longer to handle deferred proxy requests. diff --git a/src/workerd/io/worker.c++ b/src/workerd/io/worker.c++ index 054469fc550..389de29723d 100644 --- a/src/workerd/io/worker.c++ +++ b/src/workerd/io/worker.c++ @@ -977,6 +977,7 @@ Worker::Isolate::Isolate(kj::Own apiIsolateParam, metrics(kj::mv(metricsParam)), impl(kj::heap(*apiIsolate, *metrics, *limitEnforcer, allowInspector)), weakIsolateRef(kj::atomicRefcounted(this)) { + metrics->created(id); // We just created our isolate, so we don't need to use Isolate::Impl::Lock (nor an async lock). auto lock = apiIsolate->lock(); auto features = apiIsolate->getFeatureFlags();