X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=core%2Fstoragemanager.lua;h=0857baf4b27c9a6f5d99737fdcb1b7f555205b8a;hb=1a4662559024e6c550fc112109066d73d080b343;hp=811b7f48bd54102c60cffb53972e6e6322c77f39;hpb=f88d36756e81919dc41f6e9a79346f67b9f7ad4a;p=prosody.git diff --git a/core/storagemanager.lua b/core/storagemanager.lua index 811b7f48..0857baf4 100644 --- a/core/storagemanager.lua +++ b/core/storagemanager.lua @@ -1,10 +1,11 @@ -local error = error; +local error, type = error, type; local setmetatable = setmetatable; local config = require "core.configmanager"; local datamanager = require "util.datamanager"; local modulemanager = require "core.modulemanager"; +local multitable = require "util.multitable"; local hosts = hosts; local log = require "util.logger".init("storagemanager"); @@ -43,6 +44,7 @@ local function load_driver(host, driver_name) if not driver then if driver_name ~= "internal" then modulemanager.load(host, "storage_"..driver_name); + return stores_available:get(host, driver_name); else return setmetatable({host = host}, default_driver_mt); end @@ -64,8 +66,10 @@ function open(host, store, typ) driver_name = config.get(host, "core", "default_storage"); driver = load_driver(host, driver_name); if not driver then + if storage or driver_name then + log("warn", "Falling back to default driver for %s storage on %s", store, host); + end driver_name = "internal"; - log("warn", "Falling back to default driver for %s storage on %s", store, host); driver = load_driver(host, driver_name); end end @@ -75,7 +79,7 @@ function open(host, store, typ) if err == "unsupported-store" then log("debug", "Storage driver %s does not support store %s (%s), falling back to internal driver", driver_name, store, typ); - ret = setmetatable({ host = host, store = store }, default_driver_mt); end -- default to default driver + ret = setmetatable({ host = host, store = store }, default_driver_mt); -- default to default driver err = nil; end end