# HG changeset patch # User drewp # Date 1556695453 25200 # Node ID e6c6574f3d2442bc6f08379dd84be6b3631c2028 # Parent 35dcf36bf395a91876d687f240fea811f0cc66fa fix a hang bug where polling stopped Ignore-this: 7e3aaf37a2e0619c4b168cc424bf9c21 darcs-hash:f29bc74cf5a4f968bd45b9cf61e5fb5a430d9bed diff -r 35dcf36bf395 -r e6c6574f3d24 service/frontDoorLock/front_door_lock.py --- a/service/frontDoorLock/front_door_lock.py Wed May 01 00:09:54 2019 -0700 +++ b/service/frontDoorLock/front_door_lock.py Wed May 01 00:24:13 2019 -0700 @@ -79,7 +79,7 @@ self.timeUnlocked = None self.autoLockSec = 6 self.subj = ROOM['frontDoorLock'] - task.LoopingCall(self.check).start(1) + task.LoopingCall(self.pollCheck).start(1) def relock(self): log.info('autolock is up: requesting lock') @@ -90,9 +90,9 @@ g = self.masterGraph lockIn = self.autoLockSec - int(unlockedFor) if lockIn < 0: - tu = self.timeUnlocked - log.warn("timeUnlocked %(tu)r, state %(state)s, " - "unlockedFor %(unlockedFor)r, lockIn %(lockIn)r", vars()) + state = g._graph.value(self.subj, ROOM['state']) + log.warn(f"timeUnlocked {self.timeUnlocked}, state {state}, " + "unlockedFor {unlockedFor}, lockIn {lockIn}") lockIn = 0 g.patchObject(ctx, self.subj, ROOM['unlockedForSec'], Literal(int(unlockedFor))) @@ -103,6 +103,12 @@ g = self.masterGraph g.patchObject(ctx, self.subj, ROOM['unlockedForSec'], None) g.patchObject(ctx, self.subj, ROOM['autoLockInSec'], None) + + def pollCheck(self): + try: + self.check() + except Exception: + log.exception('poll failed') def check(self): g = self.masterGraph