Summary
ConnectorTransactionStore::createTransaction() commits a blank, all-default Transaction object to flash before the caller populates it with real data
(idTag, authorization, begin timestamp). If the device resets between this placeholder commit and the follow-up commit, the leftover file is loaded back on the next boot as a non-null, "active" transaction that never starts, neveraborts, and is never cleaned up — permanently occupying the connector.
This is one such session extracted from the filesystem
{"session":{},"start":{"opNr":0,"timestamp":"2010-01-01T00:00:00Z","bootNr":0},"stop":{"opNr":0,"timestamp":"2010-01-01T00:00:00Z","bootNr":0}}
Summary
ConnectorTransactionStore::createTransaction()commits a blank, all-defaultTransactionobject to flash before the caller populates it with real data(idTag, authorization, begin timestamp). If the device resets between this placeholder commit and the follow-up commit, the leftover file is loaded back on the next boot as a non-null, "active" transaction that never starts, neveraborts, and is never cleaned up — permanently occupying the connector.
This is one such session extracted from the filesystem
{"session":{},"start":{"opNr":0,"timestamp":"2010-01-01T00:00:00Z","bootNr":0},"stop":{"opNr":0,"timestamp":"2010-01-01T00:00:00Z","bootNr":0}}