mirror of https://gitee.com/bigwinds/arangodb
Locking is now done in an extra round after the query is fully instanciated in the cluster. All participating shards are locked in alphabetical order of their shard ID (local collection name). For this to work there is a new action in the RestAqlHandler plus a mechanism to prevent the usual locking from happening: Each thread has a thread local static class variable of triagens::arango::Transaction::_makeNolockHeaders which is of type std::unordered_set<std::string>*. Whenever this is not equal to nullptr and a local collection name is stored in there, no locking or unlocking takes place. This information is forwarded by the X-Arango-Nolock HTTP header, whenever an HTTP request is sent via ClusterComm to a shard. |
||
---|---|---|
.. | ||
EndpointServer.h | ||
GeneralAsyncCommTask.h | ||
GeneralCommTask.h | ||
GeneralListenTask.h | ||
GeneralServer.h | ||
GeneralServerDispatcher.h | ||
GeneralServerJob.h | ||
GeneralSslServer.h | ||
SpecificCommTask.h | ||
SslAsyncCommTask.h |