From c3150d821f9fe404c7836d6aa4e5047a450b29fa Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 18 Dec 2015 17:44:16 +0100 Subject: [PATCH] gluon-announce{,d}: create a new UCI cursor for each run --- .../files/usr/lib/lua/gluon/announce.lua | 19 ++++++++++++++++++- .../files/usr/lib/lua/gluon/announced.lua | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua b/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua index 29a1f817..0e336ad5 100644 --- a/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua +++ b/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua @@ -3,8 +3,11 @@ module('gluon.announce', package.seeall) fs = require 'nixio.fs' -uci = require('luci.model.uci').cursor() util = require 'gluon.util' +model_uci = require 'luci.model.uci' + + +local collect_dir local function collect_entry(entry) if fs.stat(entry, 'type') == 'dir' then @@ -49,3 +52,17 @@ function collect_dir(dir) return ret end end + +function collect(dir) + local f = collect_dir(dir) + + return function () + _M.uci = model_uci.cursor() + ret = f() + _M.uci = nil + + collectgarbage() + + return ret + end +end diff --git a/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua b/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua index 7c43a523..2dfe005c 100644 --- a/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua +++ b/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua @@ -12,7 +12,7 @@ nixio.chdir('/lib/gluon/announce/') for dir in fs.glob('*.d') do local name = dir:sub(1, -3) memoize[name] = { - collect = announce.collect_dir(dir), + collect = announce.collect(dir), -- tonumber will return 0 for invalid inputs cache_time = tonumber(util.trim(fs.readfile(name .. '.cache') or '')) }