Data loss
Closed this issue · 1 comments
mbucc commented
t0.py - Log three "tick" transactions.
import glob
import os
from pv import PSys, Tn1, Log
def clear_state():
for fn in glob.glob("./*.log"):
os.remove(fn)
for fn in glob.glob("./*.snapshot"):
os.remove(fn)
if __name__ == "__main__":
clear_state()
psys = PSys(Log('.'), dict)
psys.exe(Tn1()) # tick = 0
psys.exe(Tn1()) # 1
psys.makeSnapshot()
psys.exe(Tn1()) # 2
print psys.root['tick']
t1.py -- print out current "tick" value
from pv import PSys, Log
if __name__ == "__main__":
psys = PSys(Log('.'), dict)
print psys.root['tick']
# prints 1 !! (we lost last transaction)
You need three more lines in Log.putSnapshot():
self.logFile.close()
self.logFileName = self.makeLogFileName(serialid + 1)
self.logFile = open(self.logFileName, 'ab')
PetrGlad commented
Seems that reopening log is simplest solution to this.