Skip to content

Commit

Permalink
disable TTL if idleTTL is set to 0
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart committed May 26, 2024
1 parent 9c27399 commit ae41354
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
5 changes: 5 additions & 0 deletions .changeset/thirty-phones-leave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@effect-rx/rx": patch
---

disable TTL if idleTTL is set to 0
8 changes: 6 additions & 2 deletions packages/rx/src/internal/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,16 @@ class RegistryImpl implements Registry.Registry {
return this.subscribe(rx, constListener, constImmediate)
}

rxHasTTL(rx: Rx.Rx<any>): boolean {
return !rx.keepAlive && rx.idleTTL !== 0 && (rx.idleTTL !== undefined || this.defaultIdleTTL !== undefined)
}

ensureNode<A>(rx: Rx.Rx<A>): Node<A> {
let node = this.nodes.get(rx)
if (node === undefined) {
node = this.createNode(rx)
this.nodes.set(rx, node)
} else if (!rx.keepAlive && (rx.idleTTL || this.defaultIdleTTL)) {
} else if (this.rxHasTTL(rx)) {
this.removeNodeTimeout(node)
}
return node
Expand Down Expand Up @@ -138,7 +142,7 @@ class RegistryImpl implements Registry.Registry {
}

removeNode(node: Node<any>): void {
if (!node.rx.keepAlive && (node.rx.idleTTL || this.defaultIdleTTL)) {
if (this.rxHasTTL(node.rx)) {
this.setNodeTimeout(node)
} else {
this.nodes.delete(node.rx)
Expand Down
3 changes: 2 additions & 1 deletion packages/rx/src/internal/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import { NoSuchElementException } from "effect/Cause"
import type * as Effect from "effect/Effect"
import * as Exit from "effect/Exit"
import * as FiberId from "effect/FiberId"
import * as Runtime from "effect/Runtime"
import { SyncScheduler } from "effect/Scheduler"

Expand Down Expand Up @@ -50,6 +51,6 @@ export const runCallbackSync =
fiberRuntime.addObserver(onExit)
return function() {
fiberRuntime.removeObserver(onExit)
fiberRuntime.unsafeInterruptAsFork(fiberRuntime.id())
fiberRuntime.unsafeInterruptAsFork(FiberId.none)
}
}

0 comments on commit ae41354

Please sign in to comment.