1
0
Fork 0

issue #662: ArangoDB on Windows hanging...

This commit is contained in:
Jan Steemann 2013-11-11 14:29:53 +01:00
parent 30e58362d7
commit b131dc5a25
3 changed files with 12 additions and 9 deletions

View File

@ -6974,7 +6974,7 @@ static v8::Handle<v8::Value> JS_UnloadVocbaseCol (v8::Arguments const& argv) {
TRI_V8_EXCEPTION_INTERNAL(scope, "cannot extract collection");
}
int res = TRI_UnloadCollectionVocBase(collection->_vocbase, collection);
int res = TRI_UnloadCollectionVocBase(collection->_vocbase, collection, false);
if (res != TRI_ERROR_NO_ERROR) {
TRI_V8_EXCEPTION_MESSAGE(scope, res, "cannot unload collection");

View File

@ -1458,7 +1458,12 @@ void TRI_DestroyVocBase (TRI_vocbase_t* vocbase) {
TRI_vector_pointer_t collections;
int res;
size_t i;
// stop replication
TRI_StopReplicationApplier(vocbase->_replicationApplier, false);
TRI_StopReplicationLogger(vocbase->_replicationLogger);
TRI_InitVectorPointer(&collections, TRI_UNKNOWN_MEM_ZONE);
TRI_WRITE_LOCK_COLLECTIONS_VOCBASE(vocbase);
@ -1473,15 +1478,11 @@ void TRI_DestroyVocBase (TRI_vocbase_t* vocbase) {
TRI_vocbase_col_t* collection;
collection = (TRI_vocbase_col_t*) vocbase->_collections._buffer[i];
TRI_UnloadCollectionVocBase(vocbase, collection);
TRI_UnloadCollectionVocBase(vocbase, collection, true);
}
TRI_DestroyVectorPointer(&collections);
// stop replication
TRI_StopReplicationApplier(vocbase->_replicationApplier, false);
TRI_StopReplicationLogger(vocbase->_replicationLogger);
// this will signal the synchroniser and the compactor threads to do one last iteration
vocbase->_state = 2;
@ -1891,8 +1892,9 @@ TRI_vocbase_col_t* TRI_CreateCollectionVocBase (TRI_vocbase_t* vocbase,
////////////////////////////////////////////////////////////////////////////////
int TRI_UnloadCollectionVocBase (TRI_vocbase_t* vocbase,
TRI_vocbase_col_t* collection) {
if (! collection->_canUnload) {
TRI_vocbase_col_t* collection,
bool force) {
if (! collection->_canUnload && ! force) {
return TRI_set_errno(TRI_ERROR_FORBIDDEN);
}

View File

@ -534,7 +534,8 @@ TRI_vocbase_col_t* TRI_CreateCollectionVocBase (TRI_vocbase_t*,
////////////////////////////////////////////////////////////////////////////////
int TRI_UnloadCollectionVocBase (TRI_vocbase_t*,
TRI_vocbase_col_t*);
TRI_vocbase_col_t*,
bool);
////////////////////////////////////////////////////////////////////////////////
/// @brief drops a (document) collection