Skip to content

Commit 802b74b

Browse files
refactor(serial_manager): remove unused helpers; keep minimal backward-compat check_status for tests
Co-authored-by: openhands <openhands@all-hands.dev>
1 parent 4fbde87 commit 802b74b

1 file changed

Lines changed: 35 additions & 88 deletions

File tree

benchmesh-serial-service/src/benchmesh_service/serial_manager.py

Lines changed: 35 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def identify(self):
153153
except Exception:
154154
conn.driver = None
155155
# Ensure registry reflects disconnected state
156-
self._clear_disconnected_registry(dev_id)
156+
self.registry_obj.clear_disconnected(dev_id)
157157
return None
158158
# Ensure a worker exists even if not identified yet; it will be IDN-gated
159159
if dev_id not in self.workers:
@@ -174,6 +174,39 @@ def identify(self):
174174
self.metrics.inc_identify_fail(dev_id)
175175
return conn.driver
176176

177+
# Backward-compat: simple probe loop used by legacy tests
178+
def check_status(self):
179+
now = time.time()
180+
for dev in self.devices:
181+
dev_id = dev.get('id')
182+
if not dev_id:
183+
continue
184+
drv = self.connections.get(dev_id)
185+
if drv is None:
186+
last_attempt = self.last_open_attempt.get(dev_id, 0.0)
187+
if now - last_attempt >= 2.0:
188+
self.last_open_attempt[dev_id] = now
189+
new_drv = self.reconnect(dev_id)
190+
if new_drv:
191+
self.connections[dev_id] = new_drv
192+
self.last_ok[dev_id] = 0.0
193+
continue
194+
try:
195+
if hasattr(drv, 'identify'):
196+
_ = drv.identify()
197+
else:
198+
t = getattr(drv, 't', None)
199+
if t:
200+
t.write_line('*IDN?')
201+
_ = t.read_until_reol(256)
202+
except Exception:
203+
try:
204+
if hasattr(drv, 'close'):
205+
drv.close()
206+
except Exception:
207+
pass
208+
self.connections[dev_id] = None
209+
177210

178211
def _update_registry(self, dev_id: str, key: str, value: Any, klass: str | None = None):
179212
self.registry_obj.update(dev_id, key, value, klass)
@@ -187,39 +220,7 @@ def clear_device_registry(self, dev_id: str):
187220
def _clear_disconnected_registry(self, dev_id: str):
188221
self.registry_obj.clear_disconnected(dev_id)
189222

190-
def monitor_connections(self):
191-
print("Starting connection monitor thread.")
192-
while self.keep_running:
193-
now = time.time()
194-
for dev in self.devices:
195-
dev_id = dev.get('id')
196-
if not dev_id:
197-
continue
198-
# Open or identify if needed; this will set up workers when IDN is available
199-
self._open_or_identify(dev)
200-
# Run worker tick if exists
201-
w = self.workers.get(dev_id)
202-
if w:
203-
# Inject latest test overrides if present
204-
w.interval_override = self.dev_class_poll_interval.get(dev_id) or None
205-
if dev_id in self.last_probe_class:
206-
w.last_probe_class = self.last_probe_class[dev_id]
207-
try:
208-
w.run_once(now)
209-
except RuntimeError as e:
210-
if str(e) == 'poll_empty':
211-
# Drop connection and rely on reconnect cadence
212-
self.connections[dev_id] = None
213-
if dev_id in self.dev_conns:
214-
self.dev_conns[dev_id].driver = None
215-
else:
216-
raise
217-
if now - self._last_registry_log >= 5.0:
218-
self._last_registry_log = now
219-
try:
220-
logger.debug("Registry snapshot: %s", json.dumps(self.registry, ensure_ascii=False))
221-
except Exception:
222-
logger.debug("Registry snapshot (repr): %r", self.registry)
223+
# Removed legacy monitor and status helpers. Device threads handle cadence.
223224

224225
def _device_worker(self, dev_id: str):
225226
while self.keep_running:
@@ -308,57 +309,3 @@ def stop(self):
308309
pass
309310
self.logger.info("All connections closed.")
310311

311-
def close_connections(self):
312-
for dev_id, drv in list(self.connections.items()):
313-
if drv:
314-
try:
315-
drv.close()
316-
logger.info("Closed connection %s", dev_id)
317-
except Exception:
318-
logger.exception("Error closing %s", dev_id)
319-
self.connections[dev_id] = None
320-
321-
def check_status(self):
322-
print("Checking status.")
323-
now = time.time()
324-
for dev in self.devices:
325-
dev_id = dev.get('id')
326-
if not dev_id:
327-
continue
328-
drv = self.connections.get(dev_id)
329-
if drv is None:
330-
last_attempt = self.last_open_attempt.get(dev_id, 0.0)
331-
if now - last_attempt >= 2.0:
332-
self.last_open_attempt[dev_id] = now
333-
new_drv = self.reconnect(dev)
334-
if new_drv:
335-
print("Opened connection to", dev_id)
336-
self.connections[dev_id] = new_drv
337-
self.last_ok[dev_id] = 0.0
338-
continue
339-
340-
try:
341-
ident = None
342-
if hasattr(drv, 'identify'):
343-
ident = drv.identify()
344-
else:
345-
# fallback: try to access transport
346-
t = getattr(drv, 't', None)
347-
if t:
348-
t.write_line('*IDN?')
349-
ident = t.read_until_reol(256)
350-
351-
if ident:
352-
self.last_ok[dev_id] = now
353-
self._update_registry(dev_id, 'IDN', ident)
354-
logger.debug("Probe OK %s -> %s", dev_id, ident)
355-
else:
356-
logger.debug("No response from %s on probe", dev_id)
357-
358-
except Exception as e:
359-
logger.warning("Connection error for %s: %s", dev_id, e)
360-
try:
361-
drv.close()
362-
except Exception:
363-
pass
364-
self.connections[dev_id] = None

0 commit comments

Comments
 (0)