From 01c04fdd82cb245124dc85b02e14600a903e53bf Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Wed, 28 Jun 2023 13:28:21 +0530 Subject: [PATCH 01/12] added logs stub --- x/debug.go | 5 +++++ x/nodebug.go | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/x/debug.go b/x/debug.go index 048aac34bfe..ae842884d8c 100644 --- a/x/debug.go +++ b/x/debug.go @@ -21,6 +21,7 @@ package x import ( "bytes" + "fmt" "log" "sort" @@ -29,6 +30,10 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" ) +func PrintDebugLog(log string) { + fmt.Println("DEBUG LOG:", log) +} + // VerifyPack checks that the Pack should not be nil if the postings exist. func VerifyPack(plist *pb.PostingList) { if plist.Pack == nil && len(plist.Postings) > 0 { diff --git a/x/nodebug.go b/x/nodebug.go index eb0c96253f7..23a5dcfd9c6 100644 --- a/x/nodebug.go +++ b/x/nodebug.go @@ -25,6 +25,10 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" ) +// Print log that should only happen in debug mode +func PrintLog(log string) { +} + // VerifyPack works in debug mode. Check out the comment in debug_on.go func VerifyPack(plist *pb.PostingList) { } From 1235289edd9f8cbcb6d2a06caeae157285d3a405 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Wed, 28 Jun 2023 13:28:39 +0530 Subject: [PATCH 02/12] temp --- algo/binprofile | Bin 0 -> 17600 bytes algo/linprofile | Bin 0 -> 12234 bytes algo/uidlist_test.go | 30 +++++++++++++++++++----------- 3 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 algo/binprofile create mode 100644 algo/linprofile diff --git a/algo/binprofile b/algo/binprofile new file mode 100644 index 0000000000000000000000000000000000000000..4b357fb0c7b0a24d98d19b8f79ff360ca581a3f0 GIT binary patch literal 17600 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∋h)^9Nu;zmp5HW< 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 Y|5P+mU47U89{>RV|9>nR-SuYx0J2sYUH||9 literal 0 HcmV?d00001 diff --git a/algo/uidlist_test.go b/algo/uidlist_test.go index 015a265a787..61bc32559e3 100644 --- a/algo/uidlist_test.go +++ b/algo/uidlist_test.go @@ -369,7 +369,7 @@ func BenchmarkListIntersectRandom(b *testing.B) { func BenchmarkListIntersectRatio(b *testing.B) { randomTests := func(sz int, overlap float64) { - rs := []int{1, 10, 50, 100, 500, 1000, 10000, 100000, 1000000} + rs := []int{1, 10, 50, 100, 200, 400, 500, 1000, 10000} for _, r := range rs { sz1 := sz sz2 := sz * r @@ -396,16 +396,24 @@ func BenchmarkListIntersectRatio(b *testing.B) { fmt.Printf("len: %d, compressed: %d, bytes/int: %f\n", len(v1), compressedUids.Size(), float64(compressedUids.Size())/float64(len(v1))) - b.Run(fmt.Sprintf(":IntersectWith:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), + b.Run(fmt.Sprintf("compressed:IntersectWithLinJump:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), func(b *testing.B) { for k := 0; k < b.N; k++ { - IntersectWith(u, v, dst1) + dec := codec.Decoder{Pack: compressedUids} + dec.Seek(0, codec.SeekStart) + dst := v.Uids[:0] + + IntersectCompressedWithLinJump(&dec, u.Uids, &dst) } }) - b.Run(fmt.Sprintf("compressed:IntersectWith:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), + b.Run(fmt.Sprintf("compressed:IntersectWithBin:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), func(b *testing.B) { for k := 0; k < b.N; k++ { - IntersectCompressedWith(compressedUids, 0, u, dst2) + dec := codec.Decoder{Pack: compressedUids} + dec.Seek(0, codec.SeekStart) + dst := v.Uids[:0] + + IntersectCompressedWithBin(&dec, u.Uids, &dst) } }) fmt.Println() @@ -427,12 +435,12 @@ func BenchmarkListIntersectRatio(b *testing.B) { } } - randomTests(10, 0.01) - randomTests(100, 0.01) - randomTests(1000, 0.01) - randomTests(10000, 0.01) - randomTests(100000, 0.01) - randomTests(1000000, 0.01) + randomTests(10, 0.1) + randomTests(100, 0.1) + randomTests(1000, 0.1) + randomTests(10000, 0.1) + randomTests(100000, 0.1) + randomTests(1000000, 0.1) } func skipDuplicate(in []uint64, idx int) int { From 23eb12f911fe6441d9bf069cbe5b2d8a13f8375f Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Wed, 28 Jun 2023 15:35:47 +0530 Subject: [PATCH 03/12] Added logs --- posting/list.go | 1 + worker/draft.go | 2 ++ x/debug.go | 19 +++++++++++++++++-- x/nodebug.go | 13 +++++++++++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/posting/list.go b/posting/list.go index a3afa552cd1..f6a0ccf746a 100644 --- a/posting/list.go +++ b/posting/list.go @@ -897,6 +897,7 @@ func (l *List) Rollup(alloc *z.Allocator, readTs uint64) ([]*bpb.KV, error) { return bytes.Compare(kvs[i].Key, kvs[j].Key) <= 0 }) + x.PrintRollup(out.plist, out.parts, l.key, kv.Version) x.VerifyPostingSplits(kvs, out.plist, out.parts, l.key) return kvs, nil } diff --git a/worker/draft.go b/worker/draft.go index a0a524ee48f..eabac1de716 100644 --- a/worker/draft.go +++ b/worker/draft.go @@ -490,6 +490,7 @@ func (n *node) applyMutations(ctx context.Context, proposal *pb.Proposal) (rerr } m := proposal.Mutations + x.PrintMutationProposal(m) // It is possible that the user gives us multiple versions of the same edge, one with no facets // and another with facets. In that case, use stable sort to maintain the ordering given to us @@ -812,6 +813,7 @@ func (n *node) processApplyCh() { // TODO(Anurag - 4 May 2020): Are we using pkey? Remove if unused. func (n *node) commitOrAbort(pkey uint64, delta *pb.OracleDelta) error { + x.PrintOracleDelta(delta) // First let's commit all mutations to disk. writer := posting.NewTxnWriter(pstore) toDisk := func(start, commit uint64) { diff --git a/x/debug.go b/x/debug.go index ae842884d8c..103110b0de4 100644 --- a/x/debug.go +++ b/x/debug.go @@ -30,8 +30,23 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" ) -func PrintDebugLog(log string) { - fmt.Println("DEBUG LOG:", log) +func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { + k, _ := Parse(baseKey) + fmt.Printf("Doing rollup for key: %v at timestamp: %v\n", k, ts) +} + +func PrintMutationProposal(mutations *pb.Mutations) { + startTs := mutations.StartTs + fmt.Printf("MUTATION PROPOSAL AT: %v \n", startTs) + for _, edge := range mutations.Edges { + fmt.Printf("Mutation Edge, StartTs: %v, Edge: %v\n", startTs, edge) + } +} + +func PrintOracleDelta(delta *pb.OracleDelta) { + for _, status := range delta.Txns { + fmt.Println("COMMITING: ", status.StartTs, status.CommitTs) + } } // VerifyPack checks that the Pack should not be nil if the postings exist. diff --git a/x/nodebug.go b/x/nodebug.go index 23a5dcfd9c6..73f1acd5105 100644 --- a/x/nodebug.go +++ b/x/nodebug.go @@ -25,8 +25,17 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" ) -// Print log that should only happen in debug mode -func PrintLog(log string) { +// Print rollup that happen +func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { + +} + +// Print mutation proposal that shows that a proposal came in +func PrintMutationProposal(pb *pb.Mutations) { +} + +// Print Oracle delta recieved when commting a transaction +func PrintOracleDelta(delta *pb.OracleDelta) { } // VerifyPack works in debug mode. Check out the comment in debug_on.go From 1440b1b24c1d8578b4b8feaf967d2820c8a165fc Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Wed, 28 Jun 2023 15:44:49 +0530 Subject: [PATCH 04/12] Removed bin files --- algo/binprofile | Bin 17600 -> 0 bytes algo/linprofile | Bin 12234 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 algo/binprofile delete mode 100644 algo/linprofile diff --git a/algo/binprofile b/algo/binprofile deleted file mode 100644 index 4b357fb0c7b0a24d98d19b8f79ff360ca581a3f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17600 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∋h)^9Nu;zmp5HW< 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 Y|5P+mU47U89{>RV|9>nR-SuYx0J2sYUH||9 From 16371451987b5638804f72d730b155be7e3f1462 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Wed, 28 Jun 2023 15:49:47 +0530 Subject: [PATCH 05/12] Fixed diffs --- algo/uidlist_test.go | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/algo/uidlist_test.go b/algo/uidlist_test.go index 61bc32559e3..015a265a787 100644 --- a/algo/uidlist_test.go +++ b/algo/uidlist_test.go @@ -369,7 +369,7 @@ func BenchmarkListIntersectRandom(b *testing.B) { func BenchmarkListIntersectRatio(b *testing.B) { randomTests := func(sz int, overlap float64) { - rs := []int{1, 10, 50, 100, 200, 400, 500, 1000, 10000} + rs := []int{1, 10, 50, 100, 500, 1000, 10000, 100000, 1000000} for _, r := range rs { sz1 := sz sz2 := sz * r @@ -396,24 +396,16 @@ func BenchmarkListIntersectRatio(b *testing.B) { fmt.Printf("len: %d, compressed: %d, bytes/int: %f\n", len(v1), compressedUids.Size(), float64(compressedUids.Size())/float64(len(v1))) - b.Run(fmt.Sprintf("compressed:IntersectWithLinJump:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), + b.Run(fmt.Sprintf(":IntersectWith:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), func(b *testing.B) { for k := 0; k < b.N; k++ { - dec := codec.Decoder{Pack: compressedUids} - dec.Seek(0, codec.SeekStart) - dst := v.Uids[:0] - - IntersectCompressedWithLinJump(&dec, u.Uids, &dst) + IntersectWith(u, v, dst1) } }) - b.Run(fmt.Sprintf("compressed:IntersectWithBin:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), + b.Run(fmt.Sprintf("compressed:IntersectWith:ratio=%d:size=%d:overlap=%.2f:", r, sz, overlap), func(b *testing.B) { for k := 0; k < b.N; k++ { - dec := codec.Decoder{Pack: compressedUids} - dec.Seek(0, codec.SeekStart) - dst := v.Uids[:0] - - IntersectCompressedWithBin(&dec, u.Uids, &dst) + IntersectCompressedWith(compressedUids, 0, u, dst2) } }) fmt.Println() @@ -435,12 +427,12 @@ func BenchmarkListIntersectRatio(b *testing.B) { } } - randomTests(10, 0.1) - randomTests(100, 0.1) - randomTests(1000, 0.1) - randomTests(10000, 0.1) - randomTests(100000, 0.1) - randomTests(1000000, 0.1) + randomTests(10, 0.01) + randomTests(100, 0.01) + randomTests(1000, 0.01) + randomTests(10000, 0.01) + randomTests(100000, 0.01) + randomTests(1000000, 0.01) } func skipDuplicate(in []uint64, idx int) int { From 733ed93a3288e5f5e322efb781b94358a57f8e39 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Thu, 29 Jun 2023 12:30:56 +0530 Subject: [PATCH 06/12] updated mutation edges --- posting/list.go | 2 ++ worker/draft.go | 1 - x/debug.go | 12 ++++-------- x/keys.go | 11 +++++++++++ x/nodebug.go | 2 +- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/posting/list.go b/posting/list.go index f6a0ccf746a..cba042d7126 100644 --- a/posting/list.go +++ b/posting/list.go @@ -524,6 +524,8 @@ func (l *List) addMutationInternal(ctx context.Context, txn *Txn, t *pb.Directed hex.EncodeToString(l.key), mpost) } + x.PrintMutationEdge(t, pk, txn.StartTs) + // We ensure that commit marks are applied to posting lists in the right // order. We can do so by proposing them in the same order as received by the Oracle delta // stream from Zero, instead of in goroutines. diff --git a/worker/draft.go b/worker/draft.go index eabac1de716..3e7f873b2fb 100644 --- a/worker/draft.go +++ b/worker/draft.go @@ -490,7 +490,6 @@ func (n *node) applyMutations(ctx context.Context, proposal *pb.Proposal) (rerr } m := proposal.Mutations - x.PrintMutationProposal(m) // It is possible that the user gives us multiple versions of the same edge, one with no facets // and another with facets. In that case, use stable sort to maintain the ordering given to us diff --git a/x/debug.go b/x/debug.go index 103110b0de4..56c0787e165 100644 --- a/x/debug.go +++ b/x/debug.go @@ -32,20 +32,16 @@ import ( func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { k, _ := Parse(baseKey) - fmt.Printf("Doing rollup for key: %v at timestamp: %v\n", k, ts) + fmt.Printf("[DEBUG] DOING ROLLUP for key: %v at timestamp: %v\n", k, ts) } -func PrintMutationProposal(mutations *pb.Mutations) { - startTs := mutations.StartTs - fmt.Printf("MUTATION PROPOSAL AT: %v \n", startTs) - for _, edge := range mutations.Edges { - fmt.Printf("Mutation Edge, StartTs: %v, Edge: %v\n", startTs, edge) - } +func PrintMutationEdge(pb *pb.DirectedEdge, key ParsedKey, startTs uint64) { + fmt.Printf("[DEBUG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), pb) } func PrintOracleDelta(delta *pb.OracleDelta) { for _, status := range delta.Txns { - fmt.Println("COMMITING: ", status.StartTs, status.CommitTs) + fmt.Println("[DEBUG] COMMITING: ", status.StartTs, status.CommitTs) } } diff --git a/x/keys.go b/x/keys.go index f6c12a06b9a..6785db77532 100644 --- a/x/keys.go +++ b/x/keys.go @@ -19,6 +19,7 @@ package x import ( "encoding/binary" "encoding/hex" + "fmt" "math" "strconv" "strings" @@ -300,6 +301,16 @@ type ParsedKey struct { bytePrefix byte } +func (p ParsedKey) String() string { + if p.IsIndex() { + return fmt.Sprintf("UID: %v, Attr: %v, IsIndex: true, Term: %v", p.Uid, p.Attr, p.Count) + } else if p.IsCountOrCountRev() { + return fmt.Sprintf("UID: %v, Attr: %v, IsCount/Ref: true, Count: %v", p.Uid, p.Attr, p.Count) + } else { + return fmt.Sprintf("UID: %v, Attr: %v, Data key", p.Uid, p.Attr) + } +} + // IsData returns whether the key is a data key. func (p ParsedKey) IsData() bool { return (p.bytePrefix == DefaultPrefix || p.bytePrefix == ByteSplit) && p.ByteType == ByteData diff --git a/x/nodebug.go b/x/nodebug.go index 73f1acd5105..e0cf1cf5f89 100644 --- a/x/nodebug.go +++ b/x/nodebug.go @@ -31,7 +31,7 @@ func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKe } // Print mutation proposal that shows that a proposal came in -func PrintMutationProposal(pb *pb.Mutations) { +func PrintMutationEdge(pb *pb.DirectedEdge, key ParsedKey, startTs uint64) { } // Print Oracle delta recieved when commting a transaction From f72dde724e92356d5dc382882dae3d6d67f967ab Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Mon, 3 Jul 2023 13:32:52 +0530 Subject: [PATCH 07/12] updated comments --- x/debug.go | 10 +++++----- x/nodebug.go | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/x/debug.go b/x/debug.go index 56c0787e165..d0de4d28903 100644 --- a/x/debug.go +++ b/x/debug.go @@ -21,27 +21,27 @@ package x import ( "bytes" - "fmt" "log" "sort" "github.com/dgraph-io/badger/v4" bpb "github.com/dgraph-io/badger/v4/pb" "github.com/dgraph-io/dgraph/protos/pb" + "github.com/golang/glog" ) func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { k, _ := Parse(baseKey) - fmt.Printf("[DEBUG] DOING ROLLUP for key: %v at timestamp: %v\n", k, ts) + glog.V(1).Infof("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) } -func PrintMutationEdge(pb *pb.DirectedEdge, key ParsedKey, startTs uint64) { - fmt.Printf("[DEBUG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), pb) +func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { + glog.V(1).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) } func PrintOracleDelta(delta *pb.OracleDelta) { for _, status := range delta.Txns { - fmt.Println("[DEBUG] COMMITING: ", status.StartTs, status.CommitTs) + glog.V(1).Infof("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) } } diff --git a/x/nodebug.go b/x/nodebug.go index e0cf1cf5f89..930064f2342 100644 --- a/x/nodebug.go +++ b/x/nodebug.go @@ -25,16 +25,15 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" ) -// Print rollup that happen +// PrintRollup prints information about any rollup that happen func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { - } -// Print mutation proposal that shows that a proposal came in -func PrintMutationEdge(pb *pb.DirectedEdge, key ParsedKey, startTs uint64) { +// PrintMutationEdge prints all edges that are being inserted into badger +func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { } -// Print Oracle delta recieved when commting a transaction +// PrintOracleDelta prints all delta proposals that are commited func PrintOracleDelta(delta *pb.OracleDelta) { } From 81ba0c548b6e8677202bc5dd0e913abdbb1adde7 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Mon, 3 Jul 2023 13:37:25 +0530 Subject: [PATCH 08/12] fixed non working log --- x/debug.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/x/debug.go b/x/debug.go index d0de4d28903..8396dac794b 100644 --- a/x/debug.go +++ b/x/debug.go @@ -27,21 +27,20 @@ import ( "github.com/dgraph-io/badger/v4" bpb "github.com/dgraph-io/badger/v4/pb" "github.com/dgraph-io/dgraph/protos/pb" - "github.com/golang/glog" ) func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { k, _ := Parse(baseKey) - glog.V(1).Infof("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) + log.Printf("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) } func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { - glog.V(1).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) + log.Printf("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) } func PrintOracleDelta(delta *pb.OracleDelta) { for _, status := range delta.Txns { - glog.V(1).Infof("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) + log.Printf("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) } } From fadddcc6885393f32b2f5ab43260f375c896663e Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Thu, 13 Jul 2023 21:53:42 +0530 Subject: [PATCH 09/12] Updated to glog --- x/debug.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/x/debug.go b/x/debug.go index 8396dac794b..b3d9e0aa443 100644 --- a/x/debug.go +++ b/x/debug.go @@ -27,20 +27,21 @@ import ( "github.com/dgraph-io/badger/v4" bpb "github.com/dgraph-io/badger/v4/pb" "github.com/dgraph-io/dgraph/protos/pb" + "github.com/golang/glog" ) func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { k, _ := Parse(baseKey) - log.Printf("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) + glog.V(2).Infof("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) } func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { - log.Printf("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) + glog.V(2).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) } func PrintOracleDelta(delta *pb.OracleDelta) { for _, status := range delta.Txns { - log.Printf("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) + glog.V(2).Infof("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) } } From 76c536278ba7192eb50122aa79a5c7724208d7ae Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Fri, 14 Jul 2023 01:31:55 +0530 Subject: [PATCH 10/12] Fixed comment --- x/debug.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/debug.go b/x/debug.go index b3d9e0aa443..c9228077796 100644 --- a/x/debug.go +++ b/x/debug.go @@ -36,7 +36,7 @@ func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKe } func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { - glog.V(2).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v \n", startTs, key.String(), plist) + glog.V(2).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v\n", startTs, key.String(), plist) } func PrintOracleDelta(delta *pb.OracleDelta) { From 7e9915d24c189547614ce5fbaec728e4a5170bb5 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Mon, 17 Jul 2023 08:46:28 +0530 Subject: [PATCH 11/12] Fixed comments --- x/debug.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/debug.go b/x/debug.go index c9228077796..95db1b78680 100644 --- a/x/debug.go +++ b/x/debug.go @@ -32,16 +32,16 @@ import ( func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) { k, _ := Parse(baseKey) - glog.V(2).Infof("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v\n", k, ts) + glog.V(2).Infof("[TXNLOG] DOING ROLLUP for key: %+v at timestamp: %v", k, ts) } func PrintMutationEdge(plist *pb.DirectedEdge, key ParsedKey, startTs uint64) { - glog.V(2).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v\n", startTs, key.String(), plist) + glog.V(2).Infof("[TXNLOG] ADDING MUTATION at TS: %v, key: %v, value: %v", startTs, key.String(), plist) } func PrintOracleDelta(delta *pb.OracleDelta) { for _, status := range delta.Txns { - glog.V(2).Infof("[TXNLOG] COMMITING: startTs: %v, commitTs: %v\n", status.StartTs, status.CommitTs) + glog.V(2).Infof("[TXNLOG] COMMITING: startTs: %v, commitTs: %v", status.StartTs, status.CommitTs) } } From b4f53f4c4d1bc26b6f68233e77a56cecdf2007e7 Mon Sep 17 00:00:00 2001 From: Harshil Goel Date: Mon, 17 Jul 2023 09:01:03 +0530 Subject: [PATCH 12/12] udpated order --- x/debug.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x/debug.go b/x/debug.go index 95db1b78680..5774bbcb102 100644 --- a/x/debug.go +++ b/x/debug.go @@ -24,10 +24,11 @@ import ( "log" "sort" + "github.com/golang/glog" + "github.com/dgraph-io/badger/v4" bpb "github.com/dgraph-io/badger/v4/pb" "github.com/dgraph-io/dgraph/protos/pb" - "github.com/golang/glog" ) func PrintRollup(plist *pb.PostingList, parts map[uint64]*pb.PostingList, baseKey []byte, ts uint64) {