Merge pull request #10442 from zhang2014/fix/create_database_failure

Not remove metadata directory when attach database fails
This commit is contained in:
alexey-milovidov 2020-04-23 01:07:13 +03:00 committed by GitHub
commit 77969d11a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,16 +36,18 @@ namespace ErrorCodes
DatabasePtr DatabaseFactory::get( DatabasePtr DatabaseFactory::get(
const String & database_name, const String & metadata_path, const ASTStorage * engine_define, Context & context) const String & database_name, const String & metadata_path, const ASTStorage * engine_define, Context & context)
{ {
bool created = false;
try try
{ {
Poco::File(metadata_path).createDirectory(); created = Poco::File(metadata_path).createDirectory();
return getImpl(database_name, metadata_path, engine_define, context); return getImpl(database_name, metadata_path, engine_define, context);
} }
catch (...) catch (...)
{ {
Poco::File metadata_dir(metadata_path); Poco::File metadata_dir(metadata_path);
if (metadata_dir.exists()) if (created && metadata_dir.exists())
metadata_dir.remove(true); metadata_dir.remove(true);
throw; throw;