From ccd129f69e78d925cf6219a7e6af181fcfc22eb6 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 8 May 2013 11:09:48 +0200 Subject: [PATCH 1/2] fixed problem on restart ("datafile-xxx is not sealed") when server was killed during compaction --- CHANGELOG | 5 +++++ arangod/VocBase/collection.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b68d7c163b..8c106be559 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,11 @@ v1.4 v1.3.0 (2013-05-XX) ------------------- +* fixed problem on restart ("datafile-xxx is not sealed") when server was killed + during a compaction run + +* fixed leak when using cursors with very small batchSize + * issue #508: `unregistergroup` function not mentioned in http interface docs * issue #507: GET /_api/aqlfunction returns code inside parentheses diff --git a/arangod/VocBase/collection.c b/arangod/VocBase/collection.c index 2ce73dcd87..78606043c5 100644 --- a/arangod/VocBase/collection.c +++ b/arangod/VocBase/collection.c @@ -388,7 +388,8 @@ static TRI_col_file_structure_t ScanCollectionDirectory (char const* path) { newName = TRI_Concatenate2File(path, relName); TRI_FreeString(TRI_CORE_MEM_ZONE, relName); - if (! TRI_ExistsFile(newName)) { + if (TRI_ExistsFile(newName)) { + // we have a compaction-xxxx and a datafile-xxxx file. we'll keep the datafile TRI_UnlinkFile(filename); LOG_WARNING("removing left-over compaction file '%s'", filename); @@ -529,7 +530,6 @@ static bool CheckCollection (TRI_collection_t* collection) { char* ptr; TRI_col_header_marker_t* cm; - if (TRI_EqualString2("compaction", first, firstLen)) { // found a compaction file. now rename it back char* relName; @@ -540,10 +540,10 @@ static bool CheckCollection (TRI_collection_t* collection) { newName = TRI_Concatenate2File(collection->_directory, relName); TRI_FreeString(TRI_CORE_MEM_ZONE, relName); - - if (! TRI_ExistsFile(newName)) { + + if (TRI_ExistsFile(newName)) { // we have a compaction-xxxx and a datafile-xxxx file. we'll keep the datafile - LOG_WARNING("removing compaction file '%s'", filename); + LOG_WARNING("removing unfinished compaction file '%s'", filename); TRI_UnlinkFile(filename); TRI_FreeString(TRI_CORE_MEM_ZONE, newName); From eb8325ef3476049793ad0425ac3cef2eb8979035 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 8 May 2013 11:10:34 +0200 Subject: [PATCH 2/2] fixed typo in error message --- html/admin/js/bootstrap/errors.js | 2 +- js/common/bootstrap/errors.js | 2 +- lib/BasicsC/errors.dat | 2 +- lib/BasicsC/voc-errors.c | 2 +- lib/BasicsC/voc-errors.h | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/html/admin/js/bootstrap/errors.js b/html/admin/js/bootstrap/errors.js index 4f12f5126f..bc5b79fd05 100644 --- a/html/admin/js/bootstrap/errors.js +++ b/html/admin/js/bootstrap/errors.js @@ -45,7 +45,7 @@ "ERROR_ARANGO_SHAPER_FAILED" : { "code" : 1001, "message" : "illegal shaper" }, "ERROR_ARANGO_DATAFILE_SEALED" : { "code" : 1002, "message" : "datafile sealed" }, "ERROR_ARANGO_UNKNOWN_COLLECTION_TYPE" : { "code" : 1003, "message" : "unknown type" }, - "ERROR_ARANGO_READ_ONLY" : { "code" : 1004, "message" : "ready only" }, + "ERROR_ARANGO_READ_ONLY" : { "code" : 1004, "message" : "read only" }, "ERROR_ARANGO_DUPLICATE_IDENTIFIER" : { "code" : 1005, "message" : "duplicate identifier" }, "ERROR_ARANGO_DATAFILE_UNREADABLE" : { "code" : 1006, "message" : "datafile unreadable" }, "ERROR_ARANGO_CORRUPTED_DATAFILE" : { "code" : 1100, "message" : "corrupted datafile" }, diff --git a/js/common/bootstrap/errors.js b/js/common/bootstrap/errors.js index 4f12f5126f..bc5b79fd05 100644 --- a/js/common/bootstrap/errors.js +++ b/js/common/bootstrap/errors.js @@ -45,7 +45,7 @@ "ERROR_ARANGO_SHAPER_FAILED" : { "code" : 1001, "message" : "illegal shaper" }, "ERROR_ARANGO_DATAFILE_SEALED" : { "code" : 1002, "message" : "datafile sealed" }, "ERROR_ARANGO_UNKNOWN_COLLECTION_TYPE" : { "code" : 1003, "message" : "unknown type" }, - "ERROR_ARANGO_READ_ONLY" : { "code" : 1004, "message" : "ready only" }, + "ERROR_ARANGO_READ_ONLY" : { "code" : 1004, "message" : "read only" }, "ERROR_ARANGO_DUPLICATE_IDENTIFIER" : { "code" : 1005, "message" : "duplicate identifier" }, "ERROR_ARANGO_DATAFILE_UNREADABLE" : { "code" : 1006, "message" : "datafile unreadable" }, "ERROR_ARANGO_CORRUPTED_DATAFILE" : { "code" : 1100, "message" : "corrupted datafile" }, diff --git a/lib/BasicsC/errors.dat b/lib/BasicsC/errors.dat index 23e40ecc0e..11914ec6fd 100755 --- a/lib/BasicsC/errors.dat +++ b/lib/BasicsC/errors.dat @@ -49,7 +49,7 @@ ERROR_ARANGO_ILLEGAL_STATE,1000,"illegal state","Internal error that will be rai ERROR_ARANGO_SHAPER_FAILED,1001,"illegal shaper","Internal error that will be raised when the shaper encountered a porblem." ERROR_ARANGO_DATAFILE_SEALED,1002,"datafile sealed","Internal error that will be raised when trying to write to a datafile." ERROR_ARANGO_UNKNOWN_COLLECTION_TYPE,1003,"unknown type","Internal error that will be raised when an unknown collection type is encountered." -ERROR_ARANGO_READ_ONLY,1004,"ready only","Internal error that will be raised when trying to write to a read-only datafile or collection." +ERROR_ARANGO_READ_ONLY,1004,"read only","Internal error that will be raised when trying to write to a read-only datafile or collection." ERROR_ARANGO_DUPLICATE_IDENTIFIER,1005,"duplicate identifier","Internal error that will be raised when a identifier duplicate is detected." ERROR_ARANGO_DATAFILE_UNREADABLE,1006,"datafile unreadable","Internal error that will be raised when the datafile is unreadable." diff --git a/lib/BasicsC/voc-errors.c b/lib/BasicsC/voc-errors.c index de0a97c1c5..2f4bf0f5da 100644 --- a/lib/BasicsC/voc-errors.c +++ b/lib/BasicsC/voc-errors.c @@ -41,7 +41,7 @@ void TRI_InitialiseErrorMessages (void) { REG_ERROR(ERROR_ARANGO_SHAPER_FAILED, "illegal shaper"); REG_ERROR(ERROR_ARANGO_DATAFILE_SEALED, "datafile sealed"); REG_ERROR(ERROR_ARANGO_UNKNOWN_COLLECTION_TYPE, "unknown type"); - REG_ERROR(ERROR_ARANGO_READ_ONLY, "ready only"); + REG_ERROR(ERROR_ARANGO_READ_ONLY, "read only"); REG_ERROR(ERROR_ARANGO_DUPLICATE_IDENTIFIER, "duplicate identifier"); REG_ERROR(ERROR_ARANGO_DATAFILE_UNREADABLE, "datafile unreadable"); REG_ERROR(ERROR_ARANGO_CORRUPTED_DATAFILE, "corrupted datafile"); diff --git a/lib/BasicsC/voc-errors.h b/lib/BasicsC/voc-errors.h index 4a9f19229d..6e71418dff 100644 --- a/lib/BasicsC/voc-errors.h +++ b/lib/BasicsC/voc-errors.h @@ -73,7 +73,7 @@ extern "C" { /// - 1003: @LIT{unknown type} /// Internal error that will be raised when an unknown collection type is /// encountered. -/// - 1004: @LIT{ready only} +/// - 1004: @LIT{read only} /// Internal error that will be raised when trying to write to a read-only /// datafile or collection. /// - 1005: @LIT{duplicate identifier} @@ -725,7 +725,7 @@ void TRI_InitialiseErrorMessages (void); //////////////////////////////////////////////////////////////////////////////// /// @brief 1004: ERROR_ARANGO_READ_ONLY /// -/// ready only +/// read only /// /// Internal error that will be raised when trying to write to a read-only /// datafile or collection.