From 4e830bf5d06d91c2c899aede7283a9b9cc209e13 Mon Sep 17 00:00:00 2001 From: Phillip Michelsen Date: Fri, 13 Feb 2026 08:19:27 +0000 Subject: [PATCH] Testing traversal from head --- cmd/chron-cli/main.go | 57 +++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/cmd/chron-cli/main.go b/cmd/chron-cli/main.go index d8557bd..2f9f2ea 100644 --- a/cmd/chron-cli/main.go +++ b/cmd/chron-cli/main.go @@ -84,7 +84,7 @@ func main() { return } - for i := range 500 { + for i := range 1000000 { data := fmt.Sprintf("test%d", i) err = ledger.Append(ctx, []byte(data)) @@ -107,34 +107,37 @@ func main() { return entries[i].Timestamp.Before(entries[j].Timestamp) }) - fmt.Println("Entries:") - if len(entries) == 0 { - fmt.Println(" (none)") - } else { - for _, e := range entries { - fmt.Printf(" ts=%d id=%s prev=%s payload=%q\n", - e.Timestamp.UnixNano(), - hex.EncodeToString(e.EntryID[:]), - hex.EncodeToString(e.Previous[:]), - e.Payload, - ) - } + headID, ok, err := referenceStore.Get(ctx, "HEAD") + if err != nil { + fmt.Println("get HEAD:", err) + return + } + if !ok { + fmt.Println("HEAD reference not set") + return } - // ---- Print references (name -> EntryID hex) ---- - names := make([]string, 0, len(referenceStore.references)) - for name := range referenceStore.references { - names = append(names, name) - } - sort.Strings(names) - - fmt.Println("References:") - if len(names) == 0 { - fmt.Println(" (none)") - } else { - for _, name := range names { - id := referenceStore.references[name] - fmt.Printf(" %s -> %s\n", name, hex.EncodeToString(id[:])) + isZero32 := func(b [32]byte) bool { + for _, v := range b { + if v != 0 { + return false + } } + return true + } + + curID := headID + for { + ent, err := entryStore.Load(ctx, curID) + if err != nil { + return + } + + if isZero32(ent.Previous) { + break + } + + // Follow the linked list backwards + curID = core.EntryID(ent.Previous) } }