From 6dda6ca5e521c44fdae7d08844ca9a06ece97da3 Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Sun, 31 Dec 2017 13:52:25 -0800 Subject: [PATCH] prefix each index block name with an inverse timestamp, that decreases over time an can be lexicographically sorted to produce newest blocks first when listing by prefix P --- block/block_manager.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/block/block_manager.go b/block/block_manager.go index 96f4a828e..80ce6f1ff 100644 --- a/block/block_manager.go +++ b/block/block_manager.go @@ -7,6 +7,7 @@ "fmt" "io" "log" + "math" "sort" "strconv" "strings" @@ -280,7 +281,9 @@ func (bm *Manager) writePackIndexes(ndx packIndexes, replacesBlockBeforeTime *ti suffix = fmt.Sprintf("%v%x", compactedBlockSuffix, replacesBlockBeforeTime.UnixNano()) } - return bm.writeUnpackedBlockNotLocked(buf.Bytes(), packBlockPrefix, suffix, true) + inverseTimePrefix := fmt.Sprintf("%016x", math.MaxInt64-time.Now().UnixNano()) + + return bm.writeUnpackedBlockNotLocked(buf.Bytes(), packBlockPrefix+inverseTimePrefix, suffix, true) } func (bm *Manager) finishAllOpenPacksLocked() error {