@@ -750,4 +750,51 @@ func TestStreamWriterIncremental(t *testing.T) {
750
750
require .NoError (t , err )
751
751
})
752
752
})
753
+
754
+ t .Run ("multiple incremental with older data first" , func (t * testing.T ) {
755
+ runBadgerTest (t , nil , func (t * testing.T , db * DB ) {
756
+ buf := z .NewBuffer (10 << 20 , "test" )
757
+ defer func () { require .NoError (t , buf .Release ()) }()
758
+ KVToBuffer (& pb.KV {
759
+ Key : []byte ("a1" ),
760
+ Value : []byte ("val1" ),
761
+ Version : 11 ,
762
+ }, buf )
763
+ sw := db .NewStreamWriter ()
764
+ require .NoError (t , sw .PrepareIncremental (), "sw.PrepareIncremental() failed" )
765
+ require .NoError (t , sw .Write (buf ), "sw.Write() failed" )
766
+ require .NoError (t , sw .Flush (), "sw.Flush() failed" )
767
+
768
+ buf = z .NewBuffer (10 << 20 , "test" )
769
+ defer func () { require .NoError (t , buf .Release ()) }()
770
+ KVToBuffer (& pb.KV {
771
+ Key : []byte ("a2" ),
772
+ Value : []byte ("val2" ),
773
+ Version : 9 ,
774
+ }, buf )
775
+ sw = db .NewStreamWriter ()
776
+ require .NoError (t , sw .PrepareIncremental (), "sw.PrepareIncremental() failed" )
777
+ require .NoError (t , sw .Write (buf ), "sw.Write() failed" )
778
+ require .NoError (t , sw .Flush (), "sw.Flush() failed" )
779
+
780
+ // This will move the maxTs to 10 (earlier, without the fix)
781
+ require .NoError (t , db .Update (func (txn * Txn ) error {
782
+ return txn .Set ([]byte ("a1" ), []byte ("val3" ))
783
+ }))
784
+ // This will move the maxTs to 11 (earliler, without the fix)
785
+ require .NoError (t , db .Update (func (txn * Txn ) error {
786
+ return txn .Set ([]byte ("a3" ), []byte ("val4" ))
787
+ }))
788
+
789
+ // And now, the first write with val1 will resurface (without the fix)
790
+ require .NoError (t , db .View (func (txn * Txn ) error {
791
+ item , err := txn .Get ([]byte ("a1" ))
792
+ require .NoError (t , err )
793
+ val , err := item .ValueCopy (nil )
794
+ require .NoError (t , err )
795
+ require .Equal (t , "val3" , string (val ))
796
+ return nil
797
+ }))
798
+ })
799
+ })
753
800
}
0 commit comments