summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-21 16:48:06 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-21 16:48:06 +0100
commitbc2d8798e70f0667baa8598b58d9873aeb55a507 (patch)
tree3504f7f5df3a22c30ca40739e3a190d888793cc4 /common
parent0aa5b2187dcd7d8c91900dd5cb017481941bfc0f (diff)
downloadsink-bc2d8798e70f0667baa8598b58d9873aeb55a507.tar.gz
sink-bc2d8798e70f0667baa8598b58d9873aeb55a507.zip
Print transaction span
Diffstat (limited to 'common')
-rw-r--r--common/storage_lmdb.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp
index 392ac0a..6923d7c 100644
--- a/common/storage_lmdb.cpp
+++ b/common/storage_lmdb.cpp
@@ -768,15 +768,29 @@ DataStore::Transaction::Stat DataStore::Transaction::stat()
768 while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { 768 while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) {
769 iptr = static_cast<size_t*>(data.mv_data); 769 iptr = static_cast<size_t*>(data.mv_data);
770 freePages += *iptr; 770 freePages += *iptr;
771 bool bad = false;
771 size_t pg, prev; 772 size_t pg, prev;
772 ssize_t i, j, span = 0; 773 ssize_t i, j, span = 0;
773 j = *iptr++; 774 j = *iptr++;
774 for (i = j, prev = 1; --i >= 0; ) { 775 for (i = j, prev = 1; --i >= 0; ) {
775 pg = iptr[i]; 776 pg = iptr[i];
777 if (pg <= prev) {
778 bad = true;
779 }
776 prev = pg; 780 prev = pg;
777 pg += span; 781 pg += span;
778 for (; i >= span && iptr[i-span] == pg; span++, pg++) ; 782 for (; i >= span && iptr[i-span] == pg; span++, pg++) ;
779 } 783 }
784 std::cout << " Transaction " << *(size_t *)key.mv_data << ", "<< j << " pages, maxspan " << span << (bad ? " [bad sequence]" : "") << std::endl;
785 for (--j; j >= 0; ) {
786 pg = iptr[j];
787 for (span=1; --j >= 0 && iptr[j] == pg+span; span++);
788 if (span > 1) {
789 std::cout << " " << pg << "[" << span << "]\n";
790 } else {
791 std::cout << " " << pg << std::endl;
792 }
793 }
780 } 794 }
781 mdb_cursor_close(cursor); 795 mdb_cursor_close(cursor);
782 return {mei.me_last_pgno + 1, freePages, mst.ms_psize, mainStat, freeStat}; 796 return {mei.me_last_pgno + 1, freePages, mst.ms_psize, mainStat, freeStat};