tools/migration/migrator/prosody_files: Fix undefined global access of ‘error’, print the actual error message and correct file path in the error message when we fail to load a file, skip broken files instead of failing migration.
authorWaqas Hussain <waqas20@gmail.com>
Fri, 03 Jan 2014 15:52:52 -0500
changeset 5974 9ce0d246c851
parent 5953 1c08d6cca552
child 5975 0d219631d47b
tools/migration/migrator/prosody_files: Fix undefined global access of ‘error’, print the actual error message and correct file path in the error message when we fail to load a file, skip broken files instead of failing migration.
tools/migration/migrator/prosody_files.lua
--- a/tools/migration/migrator/prosody_files.lua	Wed Dec 18 18:35:35 2013 +0100
+++ b/tools/migration/migrator/prosody_files.lua	Fri Jan 03 15:52:52 2014 -0500
@@ -13,6 +13,7 @@
 local pairs = pairs;
 local json = require "util.json";
 local os_getenv = os.getenv;
+local error = error;
 
 prosody = {};
 local dm = require "util.datamanager"
@@ -95,15 +96,18 @@
 	local iter = mtools.sorted {
 		reader = function()
 			local x = iter();
-			if x then
+			while x do
 				dm.set_data_path(path);
 				local err;
 				x.data, err = dm.load(x.user, x.host, x.store);
 				if x.data == nil and err then
-					error(("Error loading data at path %s for %s@%s (%s store)")
-						:format(path, x.user or "<nil>", x.host or "<nil>", x.store or "<nil>"), 0);
+					local p = dm.getpath(x.user, x.host, x.store);
+					print(("Error loading data at path %s for %s@%s (%s store): %s")
+						:format(p, x.user or "<nil>", x.host or "<nil>", x.store or "<nil>", err or "<nil>"));
+				else
+					return x;
 				end
-				return x;
+				x = iter();
 			end
 		end;
 		sorter = function(a, b)