From a1c758b6154773f09a474ea936edfee384749bd9 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Fri, 4 Mar 2016 13:17:32 +0100 Subject: [PATCH] deleted some marker types --- arangod/VocBase/replication-dump.cpp | 17 +++++++------ arangod/Wal/CollectorThread.cpp | 36 +++------------------------- arangod/Wal/Marker.cpp | 15 ++++++------ arangod/Wal/Marker.h | 18 -------------- arangod/Wal/RecoverState.cpp | 8 +++---- 5 files changed, 22 insertions(+), 72 deletions(-) diff --git a/arangod/VocBase/replication-dump.cpp b/arangod/VocBase/replication-dump.cpp index ef46b0dddc..8d99f49234 100644 --- a/arangod/VocBase/replication-dump.cpp +++ b/arangod/VocBase/replication-dump.cpp @@ -296,8 +296,7 @@ static int StringifyMarkerDump(TRI_replication_dump_t* dump, switch (marker->getType()) { case TRI_DF_MARKER_VPACK_DOCUMENT: { TRI_ASSERT(nullptr == document); - auto m = static_cast(marker); - VPackSlice slice(reinterpret_cast(m) + DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT)); + VPackSlice slice(reinterpret_cast(marker) + DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT)); key = slice.get(TRI_VOC_ATTRIBUTE_KEY).getString(keyLength); rid = std::stoull(slice.get(TRI_VOC_ATTRIBUTE_REV).copyString()); type = REPLICATION_MARKER_DOCUMENT; @@ -309,8 +308,7 @@ static int StringifyMarkerDump(TRI_replication_dump_t* dump, case TRI_DF_MARKER_VPACK_REMOVE: { TRI_ASSERT(nullptr == document); - auto m = static_cast(marker); - VPackSlice slice(reinterpret_cast(m) + DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_REMOVE)); + VPackSlice slice(reinterpret_cast(marker) + DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_REMOVE)); key = slice.get(TRI_VOC_ATTRIBUTE_KEY).getString(keyLength); rid = std::stoull(slice.get(TRI_VOC_ATTRIBUTE_REV).copyString()); type = REPLICATION_MARKER_REMOVE; @@ -429,7 +427,7 @@ static int StringifyMarkerDump(TRI_replication_dump_t* dump, static int StringifyWalMarkerDocument(TRI_replication_dump_t* dump, TRI_df_marker_t const* marker) { - auto m = reinterpret_cast(marker); + TRI_ASSERT(marker->getType() == TRI_DF_MARKER_VPACK_DOCUMENT); #if 0 // TODO @@ -443,7 +441,7 @@ static int StringifyWalMarkerDocument(TRI_replication_dump_t* dump, VPackSlice slice(reinterpret_cast(DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT))); APPEND_STRING(dump->_buffer, "\"tid\":\""); - APPEND_UINT64(dump->_buffer, m->_transactionId); +// APPEND_UINT64(dump->_buffer, m->_transactionId); APPEND_STRING(dump->_buffer, "\",\"key\":\""); std::string key(slice.get(TRI_VOC_ATTRIBUTE_KEY).copyString()); TRI_AppendString2StringBuffer(dump->_buffer, key.c_str(), key.size()); @@ -466,7 +464,8 @@ static int StringifyWalMarkerDocument(TRI_replication_dump_t* dump, static int StringifyWalMarkerRemove(TRI_replication_dump_t* dump, TRI_df_marker_t const* marker) { - auto m = reinterpret_cast(marker); + TRI_ASSERT(marker->getType() == TRI_DF_MARKER_VPACK_REMOVE); +// auto m = reinterpret_cast(marker); #if 0 // TODO @@ -478,10 +477,10 @@ static int StringifyWalMarkerRemove(TRI_replication_dump_t* dump, #endif APPEND_STRING(dump->_buffer, "\"tid\":\""); - APPEND_UINT64(dump->_buffer, m->_transactionId); +// APPEND_UINT64(dump->_buffer, m->_transactionId); APPEND_STRING(dump->_buffer, "\",\"key\":\""); - VPackSlice slice(reinterpret_cast(DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_DOCUMENT))); + VPackSlice slice(reinterpret_cast(DatafileHelper::VPackOffset(TRI_DF_MARKER_VPACK_REMOVE))); std::string key(slice.get(TRI_VOC_ATTRIBUTE_KEY).copyString()); TRI_AppendString2StringBuffer(dump->_buffer, key.c_str(), key.size()); diff --git a/arangod/Wal/CollectorThread.cpp b/arangod/Wal/CollectorThread.cpp index 5ec89313bc..7f1302aca1 100644 --- a/arangod/Wal/CollectorThread.cpp +++ b/arangod/Wal/CollectorThread.cpp @@ -168,44 +168,14 @@ static bool ScanMarker(TRI_df_marker_t const* marker, void* data, break; } - case TRI_DF_MARKER_VPACK_DOCUMENT: { - TRI_voc_tick_t const databaseId = state->lastDatabaseId; - TRI_voc_cid_t const collectionId = state->lastCollectionId; - TRI_ASSERT(databaseId > 0); - TRI_ASSERT(collectionId > 0); - - auto const* m = - reinterpret_cast(marker); - TRI_voc_tid_t transactionId = m->_transactionId; - - state->collections[collectionId] = databaseId; - - if (state->failedTransactions.find(transactionId) != - state->failedTransactions.end()) { - // transaction had failed - state->operationsCount[collectionId]++; - break; - } - - if (ShouldIgnoreCollection(state, collectionId)) { - break; - } - - VPackSlice slice(reinterpret_cast(m) + DatafileHelper::VPackOffset(type)); - state->documentOperations[collectionId][slice.get(TRI_VOC_ATTRIBUTE_KEY).copyString()] = marker; - state->operationsCount[collectionId]++; - break; - } - + case TRI_DF_MARKER_VPACK_DOCUMENT: case TRI_DF_MARKER_VPACK_REMOVE: { TRI_voc_tick_t const databaseId = state->lastDatabaseId; TRI_voc_cid_t const collectionId = state->lastCollectionId; TRI_ASSERT(databaseId > 0); TRI_ASSERT(collectionId > 0); - auto const* m = - reinterpret_cast(marker); - TRI_voc_tid_t transactionId = m->_transactionId; + TRI_voc_tid_t transactionId = *reinterpret_cast(p + sizeof(TRI_df_marker_t)); state->collections[collectionId] = databaseId; @@ -220,7 +190,7 @@ static bool ScanMarker(TRI_df_marker_t const* marker, void* data, break; } - VPackSlice slice(reinterpret_cast(m) + DatafileHelper::VPackOffset(type)); + VPackSlice slice(reinterpret_cast(marker) + DatafileHelper::VPackOffset(type)); state->documentOperations[collectionId][slice.get(TRI_VOC_ATTRIBUTE_KEY).copyString()] = marker; state->operationsCount[collectionId]++; break; diff --git a/arangod/Wal/Marker.cpp b/arangod/Wal/Marker.cpp index b19a9feb56..069380fb74 100644 --- a/arangod/Wal/Marker.cpp +++ b/arangod/Wal/Marker.cpp @@ -92,12 +92,11 @@ MarkerEnvelope::MarkerEnvelope(TRI_df_marker_t const* existing, VPackDocumentMarker::VPackDocumentMarker(TRI_voc_tid_t transactionId, VPackSlice const& properties) : Marker(TRI_DF_MARKER_VPACK_DOCUMENT, - sizeof(vpack_document_marker_t) + properties.byteSize()) { - auto* m = reinterpret_cast(begin()); - m->_transactionId = transactionId; + sizeof(TRI_df_marker_t) + sizeof(TRI_voc_tid_t) + properties.byteSize()) { + *reinterpret_cast(begin() + sizeof(TRI_df_marker_t)) = transactionId; // store vpack - storeSlice(sizeof(vpack_document_marker_t), properties); + storeSlice(sizeof(TRI_df_marker_t) + sizeof(TRI_voc_tid_t), properties); } //////////////////////////////////////////////////////////////////////////////// @@ -107,12 +106,12 @@ VPackDocumentMarker::VPackDocumentMarker(TRI_voc_tid_t transactionId, VPackRemoveMarker::VPackRemoveMarker(TRI_voc_tid_t transactionId, VPackSlice const& properties) : Marker(TRI_DF_MARKER_VPACK_REMOVE, - sizeof(vpack_remove_marker_t) + properties.byteSize()) { - auto* m = reinterpret_cast(begin()); - m->_transactionId = transactionId; + sizeof(TRI_df_marker_t) + sizeof(TRI_voc_tid_t) + properties.byteSize()) { + + *reinterpret_cast(begin() + sizeof(TRI_df_marker_t)) = transactionId; // store vpack - storeSlice(sizeof(vpack_remove_marker_t), properties); + storeSlice(sizeof(TRI_df_marker_t) + sizeof(TRI_voc_tid_t), properties); } //////////////////////////////////////////////////////////////////////////////// diff --git a/arangod/Wal/Marker.h b/arangod/Wal/Marker.h index 78d097e73b..0228b53511 100644 --- a/arangod/Wal/Marker.h +++ b/arangod/Wal/Marker.h @@ -64,24 +64,6 @@ struct transaction_remote_abort_marker_t : TRI_df_marker_t { TRI_voc_tid_t _externalId; }; -//////////////////////////////////////////////////////////////////////////////// -/// @brief wal vpack document marker -//////////////////////////////////////////////////////////////////////////////// - -struct vpack_document_marker_t : TRI_df_marker_t { - TRI_voc_tid_t _transactionId; - // uint8_t* vpack -}; - -//////////////////////////////////////////////////////////////////////////////// -/// @brief wal vpack remove marker -//////////////////////////////////////////////////////////////////////////////// - -struct vpack_remove_marker_t : TRI_df_marker_t { - TRI_voc_tid_t _transactionId; - // uint8_t* vpack -}; - class Marker { Marker& operator=(Marker const&) = delete; Marker(Marker&&) = delete; diff --git a/arangod/Wal/RecoverState.cpp b/arangod/Wal/RecoverState.cpp index efe20200af..152a4abe71 100644 --- a/arangod/Wal/RecoverState.cpp +++ b/arangod/Wal/RecoverState.cpp @@ -538,8 +538,8 @@ bool RecoverState::ReplayMarker(TRI_df_marker_t const* marker, void* data, return true; } - auto const* m = reinterpret_cast(marker); - TRI_voc_tick_t transactionId = m->_transactionId; + TRI_voc_tid_t transactionId = *reinterpret_cast(p + sizeof(TRI_df_marker_t)); + if (state->ignoreTransaction(transactionId)) { // transaction was aborted return true; @@ -596,8 +596,8 @@ bool RecoverState::ReplayMarker(TRI_df_marker_t const* marker, void* data, return true; } - auto const* m = reinterpret_cast(marker); - TRI_voc_tick_t transactionId = m->_transactionId; + TRI_voc_tid_t transactionId = *reinterpret_cast(p + sizeof(TRI_df_marker_t)); + if (state->ignoreTransaction(transactionId)) { return true; }