mirror of https://gitee.com/bigwinds/arangodb
issue #662: ArangoDB on Windows hanging...
This commit is contained in:
parent
30e58362d7
commit
b131dc5a25
|
@ -6974,7 +6974,7 @@ static v8::Handle<v8::Value> JS_UnloadVocbaseCol (v8::Arguments const& argv) {
|
||||||
TRI_V8_EXCEPTION_INTERNAL(scope, "cannot extract collection");
|
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) {
|
if (res != TRI_ERROR_NO_ERROR) {
|
||||||
TRI_V8_EXCEPTION_MESSAGE(scope, res, "cannot unload collection");
|
TRI_V8_EXCEPTION_MESSAGE(scope, res, "cannot unload collection");
|
||||||
|
|
|
@ -1458,7 +1458,12 @@ void TRI_DestroyVocBase (TRI_vocbase_t* vocbase) {
|
||||||
TRI_vector_pointer_t collections;
|
TRI_vector_pointer_t collections;
|
||||||
int res;
|
int res;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
// stop replication
|
||||||
|
TRI_StopReplicationApplier(vocbase->_replicationApplier, false);
|
||||||
|
TRI_StopReplicationLogger(vocbase->_replicationLogger);
|
||||||
|
|
||||||
|
|
||||||
TRI_InitVectorPointer(&collections, TRI_UNKNOWN_MEM_ZONE);
|
TRI_InitVectorPointer(&collections, TRI_UNKNOWN_MEM_ZONE);
|
||||||
|
|
||||||
TRI_WRITE_LOCK_COLLECTIONS_VOCBASE(vocbase);
|
TRI_WRITE_LOCK_COLLECTIONS_VOCBASE(vocbase);
|
||||||
|
@ -1473,15 +1478,11 @@ void TRI_DestroyVocBase (TRI_vocbase_t* vocbase) {
|
||||||
TRI_vocbase_col_t* collection;
|
TRI_vocbase_col_t* collection;
|
||||||
|
|
||||||
collection = (TRI_vocbase_col_t*) vocbase->_collections._buffer[i];
|
collection = (TRI_vocbase_col_t*) vocbase->_collections._buffer[i];
|
||||||
TRI_UnloadCollectionVocBase(vocbase, collection);
|
TRI_UnloadCollectionVocBase(vocbase, collection, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
TRI_DestroyVectorPointer(&collections);
|
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
|
// this will signal the synchroniser and the compactor threads to do one last iteration
|
||||||
vocbase->_state = 2;
|
vocbase->_state = 2;
|
||||||
|
|
||||||
|
@ -1891,8 +1892,9 @@ TRI_vocbase_col_t* TRI_CreateCollectionVocBase (TRI_vocbase_t* vocbase,
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int TRI_UnloadCollectionVocBase (TRI_vocbase_t* vocbase,
|
int TRI_UnloadCollectionVocBase (TRI_vocbase_t* vocbase,
|
||||||
TRI_vocbase_col_t* collection) {
|
TRI_vocbase_col_t* collection,
|
||||||
if (! collection->_canUnload) {
|
bool force) {
|
||||||
|
if (! collection->_canUnload && ! force) {
|
||||||
return TRI_set_errno(TRI_ERROR_FORBIDDEN);
|
return TRI_set_errno(TRI_ERROR_FORBIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -534,7 +534,8 @@ TRI_vocbase_col_t* TRI_CreateCollectionVocBase (TRI_vocbase_t*,
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int TRI_UnloadCollectionVocBase (TRI_vocbase_t*,
|
int TRI_UnloadCollectionVocBase (TRI_vocbase_t*,
|
||||||
TRI_vocbase_col_t*);
|
TRI_vocbase_col_t*,
|
||||||
|
bool);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief drops a (document) collection
|
/// @brief drops a (document) collection
|
||||||
|
|
Loading…
Reference in New Issue