file_manager: remove gcode metadata prune callback

Inotify keeps metadata in sync with the file system.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Arksine 2021-03-20 06:10:18 -04:00 committed by Eric Callahan
parent 7744b1fd8a
commit c2871d94ed
1 changed files with 8 additions and 19 deletions

View File

@ -11,7 +11,7 @@ import logging
import json import json
import tempfile import tempfile
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from tornado.ioloop import IOLoop, PeriodicCallback from tornado.ioloop import IOLoop
from tornado.locks import Event from tornado.locks import Event
from inotify_simple import INotify from inotify_simple import INotify
from inotify_simple import flags as iFlags from inotify_simple import flags as iFlags
@ -604,7 +604,6 @@ class FileManager:
def close(self): def close(self):
self.inotify_handler.close() self.inotify_handler.close()
self.gcode_metadata.close()
INOTIFY_DELETE_TIME = .25 INOTIFY_DELETE_TIME = .25
@ -946,7 +945,6 @@ class INotifyHandler:
pass pass
METADATA_PRUNE_TIME = 600000
METADATA_NAMESPACE = "gcode_metadata" METADATA_NAMESPACE = "gcode_metadata"
METADATA_VERSION = 3 METADATA_VERSION = 3
@ -968,21 +966,20 @@ class MetadataStorage:
self.events = {} self.events = {}
self.busy = False self.busy = False
self.gc_path = gc_path self.gc_path = gc_path
self.prune_cb = PeriodicCallback(
self.prune_metadata, METADATA_PRUNE_TIME)
if self.gc_path: if self.gc_path:
self.prune_cb.start() # Check for removed gcode files while moonraker was shutdown
for fname in list(self.mddb.keys()):
fpath = os.path.join(self.gc_path, fname)
if not os.path.isfile(fpath):
self.remove_file_metadata(fname)
logging.info(f"Pruned file: {fname}")
continue
def update_gcode_path(self, path): def update_gcode_path(self, path):
if path == self.gc_path: if path == self.gc_path:
return return
self.mddb.clear() self.mddb.clear()
self.gc_path = path self.gc_path = path
if not self.prune_cb.is_running():
self.prune_cb.start()
def close(self):
self.prune_cb.stop()
def get(self, key, default=None): def get(self, key, default=None):
return self.mddb.get(key, default) return self.mddb.get(key, default)
@ -990,14 +987,6 @@ class MetadataStorage:
def __getitem__(self, key): def __getitem__(self, key):
return self.mddb[key] return self.mddb[key]
def prune_metadata(self):
for fname in list(self.mddb.keys()):
fpath = os.path.join(self.gc_path, fname)
if not os.path.isfile(fpath):
self.remove_file_metadata(fname)
logging.info(f"Pruned file: {fname}")
continue
def _has_valid_data(self, fname, fsize, modified): def _has_valid_data(self, fname, fsize, modified):
mdata = self.mddb.get(fname, {'size': "", 'modified': 0}) mdata = self.mddb.get(fname, {'size': "", 'modified': 0})
return mdata['size'] == fsize and mdata['modified'] == modified return mdata['size'] == fsize and mdata['modified'] == modified