Mercurial > prosody-modules
comparison mod_storage_xmlarchive/mod_storage_xmlarchive.lua @ 2917:cd5e6534b813
mod_storage_xmlarchive: Add additional debug logging
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 09 Mar 2018 21:58:47 +0100 |
parents | d48d4d9ccae7 |
children | f000ba14d531 |
comparison
equal
deleted
inserted
replaced
2916:b1cdcbcd1c90 | 2917:cd5e6534b813 |
---|---|
62 function archive:_get_idx(username, id, dates) | 62 function archive:_get_idx(username, id, dates) |
63 dates = dates or self:dates(username) or empty; | 63 dates = dates or self:dates(username) or empty; |
64 local date = id:sub(1, 10); | 64 local date = id:sub(1, 10); |
65 for d = 1, #dates do | 65 for d = 1, #dates do |
66 if date == dates[d] then | 66 if date == dates[d] then |
67 module:log("debug", "Loading items from %s", dates[d]); | 67 module:log("debug", "Loading index for %s", dates[d]); |
68 local items = dm.list_load(username .. "@" .. dates[d], self.host, self.store) or empty; | 68 local items = dm.list_load(username .. "@" .. dates[d], self.host, self.store) or empty; |
69 for i = 1, #items do | 69 for i = 1, #items do |
70 if items[i].id == id then | 70 if items[i].id == id then |
71 return d, i, items; | 71 return d, i, items; |
72 end | 72 end |
152 end | 152 end |
153 | 153 |
154 local date_open, xmlfile; | 154 local date_open, xmlfile; |
155 local function read_xml(date, offset, length) | 155 local function read_xml(date, offset, length) |
156 if xmlfile and date ~= date_open then | 156 if xmlfile and date ~= date_open then |
157 module:log("debug", "Closing XML file for %s", date_open); | |
157 xmlfile:close(); | 158 xmlfile:close(); |
158 xmlfile = nil; | 159 xmlfile = nil; |
159 end | 160 end |
160 if not xmlfile then | 161 if not xmlfile then |
161 date_open = date; | 162 date_open = date; |
164 xmlfile, ferr = io.open(filename); | 165 xmlfile, ferr = io.open(filename); |
165 if not xmlfile then | 166 if not xmlfile then |
166 module:log("error", "Error: %s", ferr); | 167 module:log("error", "Error: %s", ferr); |
167 return nil, ferr; | 168 return nil, ferr; |
168 end | 169 end |
170 module:log("debug", "Opened XML file %s", filename); | |
169 end | 171 end |
170 local pos, err = xmlfile:seek("set", offset); | 172 local pos, err = xmlfile:seek("set", offset); |
171 if pos ~= offset then | 173 if pos ~= offset then |
172 return nil, err or "seek-failed"; | 174 return nil, err or "seek-failed"; |
173 end | 175 end |
177 return function () | 179 return function () |
178 if limit and count >= limit then if xmlfile then xmlfile:close() end return; end | 180 if limit and count >= limit then if xmlfile then xmlfile:close() end return; end |
179 for d = start_day, last_day, step do | 181 for d = start_day, last_day, step do |
180 local date = dates[d]; | 182 local date = dates[d]; |
181 if not items then | 183 if not items then |
182 module:log("debug", "Loading items from %s", date); | 184 module:log("debug", "Loading index for %s", date); |
183 start_day = d; | 185 start_day = d; |
184 items = dm.list_load(username .. "@" .. date, self.host, self.store) or empty; | 186 items = dm.list_load(username .. "@" .. date, self.host, self.store) or empty; |
185 if not rev then | 187 if not rev then |
186 first_item, last_item = 1, #items; | 188 first_item, last_item = 1, #items; |
187 else | 189 else |
267 end | 269 end |
268 return true; | 270 return true; |
269 end | 271 end |
270 | 272 |
271 function archive:dates(username) | 273 function archive:dates(username) |
274 module:log("debug", "Loading root index for %s", username); | |
272 local dates, err = dm.list_load(username, self.host, self.store); | 275 local dates, err = dm.list_load(username, self.host, self.store); |
273 if not dates then return dates, err; end | 276 if not dates then return dates, err; end |
274 assert(type(dates[1]) == "string" and type(dates[#dates]) == "string", | 277 assert(type(dates[1]) == "string" and type(dates[#dates]) == "string", |
275 "Archive does not appear to be in xmlarchive format"); | 278 "Archive does not appear to be in xmlarchive format"); |
276 return dates; | 279 return dates; |