mirror of https://gitee.com/bigwinds/arangodb
fixed race conditions on index file creation
This commit is contained in:
parent
729bbc44f0
commit
413e038045
|
@ -4479,12 +4479,6 @@ TRI_index_t* TRI_EnsureCapConstraintDocumentCollection (TRI_document_collection_
|
|||
|
||||
idx = CreateCapConstraintDocumentCollection(document, count, size, 0, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -4497,6 +4491,12 @@ TRI_index_t* TRI_EnsureCapConstraintDocumentCollection (TRI_document_collection_
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -4897,12 +4897,6 @@ TRI_index_t* TRI_EnsureGeoIndex1DocumentCollection (TRI_document_collection_t* d
|
|||
|
||||
idx = CreateGeoIndexDocumentCollection(document, location, NULL, NULL, geoJson, unique, ignoreNull, 0, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -4915,6 +4909,12 @@ TRI_index_t* TRI_EnsureGeoIndex1DocumentCollection (TRI_document_collection_t* d
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -4946,12 +4946,6 @@ TRI_index_t* TRI_EnsureGeoIndex2DocumentCollection (TRI_document_collection_t* d
|
|||
|
||||
idx = CreateGeoIndexDocumentCollection(document, NULL, latitude, longitude, false, unique, ignoreNull, 0, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -4964,6 +4958,12 @@ TRI_index_t* TRI_EnsureGeoIndex2DocumentCollection (TRI_document_collection_t* d
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -5171,12 +5171,6 @@ TRI_index_t* TRI_EnsureHashIndexDocumentCollection (TRI_document_collection_t* d
|
|||
// given the list of attributes (as strings)
|
||||
idx = CreateHashIndexDocumentCollection(document, attributes, 0, unique, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -5189,6 +5183,12 @@ TRI_index_t* TRI_EnsureHashIndexDocumentCollection (TRI_document_collection_t* d
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -5385,12 +5385,6 @@ TRI_index_t* TRI_EnsureSkiplistIndexDocumentCollection (TRI_document_collection_
|
|||
|
||||
idx = CreateSkiplistIndexDocumentCollection(document, attributes, 0, unique, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -5403,6 +5397,12 @@ TRI_index_t* TRI_EnsureSkiplistIndexDocumentCollection (TRI_document_collection_
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -5664,12 +5664,6 @@ TRI_index_t* TRI_EnsureFulltextIndexDocumentCollection (TRI_document_collection_
|
|||
|
||||
idx = CreateFulltextIndexDocumentCollection(document, attributeName, indexSubstrings, minWordLength, 0, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -5682,6 +5676,12 @@ TRI_index_t* TRI_EnsureFulltextIndexDocumentCollection (TRI_document_collection_
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -5930,12 +5930,6 @@ TRI_index_t* TRI_EnsurePriorityQueueIndexDocumentCollection(TRI_document_collect
|
|||
// Given the list of attributes (as strings)
|
||||
idx = CreatePriorityQueueIndexDocumentCollection(document, attributes, 0, unique, created);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -5948,6 +5942,12 @@ TRI_index_t* TRI_EnsurePriorityQueueIndexDocumentCollection(TRI_document_collect
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
return idx;
|
||||
|
@ -6214,17 +6214,6 @@ TRI_index_t* TRI_EnsureBitarrayIndexDocumentCollection (TRI_document_collection_
|
|||
|
||||
idx = CreateBitarrayIndexDocumentCollection(document, attributes, values, 0, supportUndef, created, errorCode, errorStr);
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
|
||||
// .............................................................................
|
||||
// The index is 'new' so save it
|
||||
// .............................................................................
|
||||
|
||||
if (idx != NULL) {
|
||||
if (created) {
|
||||
int res;
|
||||
|
@ -6244,6 +6233,12 @@ TRI_index_t* TRI_EnsureBitarrayIndexDocumentCollection (TRI_document_collection_
|
|||
}
|
||||
}
|
||||
|
||||
TRI_WRITE_UNLOCK_DOCUMENTS_INDEXES_PRIMARY_COLLECTION(primary);
|
||||
|
||||
// .............................................................................
|
||||
// outside write-lock
|
||||
// .............................................................................
|
||||
|
||||
TRI_ReadUnlockReadWriteLock(&primary->base._vocbase->_inventoryLock);
|
||||
|
||||
// .............................................................................
|
||||
|
|
Loading…
Reference in New Issue