From 5ff1f3e7f0b55cac6e208e999bd2ecedd9bc80b2 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Fri, 20 Feb 2026 04:38:54 -0500 Subject: [PATCH] refactor: prevent infinite loop in idle state handling by adding retry mechanism --- server/Turtle.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/Turtle.js b/server/Turtle.js index e0ee7da..f67acb8 100644 --- a/server/Turtle.js +++ b/server/Turtle.js @@ -323,7 +323,17 @@ export class Turtle extends EventEmitter { } } else { console.error(`[Turtle ${this.id}] State error in ${state.name}:`, error.message); - this.setState('idle'); + // Don't transition idle→idle (causes infinite loop) + if (state.name !== 'idle') { + this.setState('idle'); + } else { + // Already idle and erroring — just wait and retry the idle loop + console.log(`[Turtle ${this.id}] Idle loop paused, will retry in 60s`); + await new Promise(r => setTimeout(r, 60000)); + if (this._state === state) { + this._runStateLoop(0); + } + } } } }