Sfoglia il codice sorgente

refactor(session): remove viewed lock

Kit Langton 1 giorno fa
parent
commit
91daa76e33
2 ha cambiato i file con 12 aggiunte e 20 eliminazioni
  1. 11 16
      packages/core/src/session.ts
  2. 1 4
      packages/core/test/session-view.test.ts

+ 11 - 16
packages/core/src/session.ts

@@ -308,7 +308,6 @@ const layer = Layer.effect(
     const scope = yield* Scope.Scope
     const activeShells = new Set<SessionSchema.ID>()
     const shellLocks = KeyedMutex.makeUnsafe<SessionSchema.ID>()
-    const viewLocks = KeyedMutex.makeUnsafe<SessionSchema.ID>()
     const closeTransport = Effect.fn("Session.closeTransport")(function* (session: SessionSchema.Info) {
       const location = Location.Ref.make({
         directory: session.location.directory,
@@ -449,21 +448,17 @@ const layer = Layer.effect(
         if (!session) return yield* new NotFoundError({ sessionID })
         return session
       }),
-      view: Effect.fn("Session.view")((input) =>
-        viewLocks.withLock(input.sessionID)(
-          Effect.gen(function* () {
-            const row = yield* db
-              .select({ idle: SessionTable.time_idle, viewed: SessionTable.time_viewed })
-              .from(SessionTable)
-              .where(eq(SessionTable.id, input.sessionID))
-              .get()
-              .pipe(Effect.orDie)
-            if (!row) return yield* new NotFoundError({ sessionID: input.sessionID })
-            if (row.idle === null || row.viewed === row.idle) return
-            yield* bus.publish(SessionEvent.Viewed, { sessionID: input.sessionID })
-          }),
-        ),
-      ),
+      view: Effect.fn("Session.view")(function* (input) {
+        const row = yield* db
+          .select({ idle: SessionTable.time_idle, viewed: SessionTable.time_viewed })
+          .from(SessionTable)
+          .where(eq(SessionTable.id, input.sessionID))
+          .get()
+          .pipe(Effect.orDie)
+        if (!row) return yield* new NotFoundError({ sessionID: input.sessionID })
+        if (row.idle === null || row.viewed === row.idle) return
+        yield* bus.publish(SessionEvent.Viewed, { sessionID: input.sessionID })
+      }),
       remove: Effect.fn("Session.remove")(function* (sessionID) {
         const session = yield* result.get(sessionID)
         yield* execution.interrupt(sessionID)

+ 1 - 4
packages/core/test/session-view.test.ts

@@ -41,10 +41,7 @@ describe("Session.view", () => {
       expect(created.time.idle).toBeUndefined()
       expect(created.time.viewed).toBeUndefined()
 
-      yield* Effect.all([session.view({ sessionID: created.id }), session.view({ sessionID: created.id })], {
-        concurrency: "unbounded",
-        discard: true,
-      })
+      yield* session.view({ sessionID: created.id })
       expect((yield* session.get(created.id)).time.viewed).toBeUndefined()
 
       yield* bus.publish(SessionEvent.Execution.Succeeded, { sessionID: created.id })