@@ -36,7 +36,7 @@ import (
36
36
func getSortedKVList (valueSize , listSize int ) * z.Buffer {
37
37
value := make ([]byte , valueSize )
38
38
y .Check2 (rand .Read (value ))
39
- buf := z .NewBuffer (10 << 20 , "test" )
39
+ buf := z .NewBuffer (10 << 20 , "test" )
40
40
for i := 0 ; i < listSize ; i ++ {
41
41
key := make ([]byte , 8 )
42
42
binary .BigEndian .PutUint64 (key , uint64 (i ))
@@ -175,7 +175,7 @@ func TestStreamWriter3(t *testing.T) {
175
175
value := make ([]byte , valueSize )
176
176
y .Check2 (rand .Read (value ))
177
177
counter := 0
178
- buf := z .NewBuffer (10 << 20 , "test" )
178
+ buf := z .NewBuffer (10 << 20 , "test" )
179
179
defer buf .Release ()
180
180
for i := 0 ; i < noOfKeys ; i ++ {
181
181
key := make ([]byte , 8 )
@@ -272,7 +272,7 @@ func TestStreamWriter4(t *testing.T) {
272
272
require .NoError (t , err , "error while updating db" )
273
273
}
274
274
275
- buf := z .NewBuffer (10 << 20 , "test" )
275
+ buf := z .NewBuffer (10 << 20 , "test" )
276
276
defer buf .Release ()
277
277
KVToBuffer (& pb.KV {
278
278
Key : []byte ("key-1" ),
@@ -297,7 +297,7 @@ func TestStreamWriter5(t *testing.T) {
297
297
right [0 ] = 0xff
298
298
copy (right [1 :], []byte ("break" ))
299
299
300
- buf := z .NewBuffer (10 << 20 , "test" )
300
+ buf := z .NewBuffer (10 << 20 , "test" )
301
301
defer buf .Release ()
302
302
KVToBuffer (& pb.KV {
303
303
Key : left ,
@@ -336,7 +336,7 @@ func TestStreamWriter6(t *testing.T) {
336
336
// will be written to level 6, we need to insert at least 1 mb of data.
337
337
// Setting keycount below 32 would cause this test to fail.
338
338
keyCount := 40
339
- buf := z .NewBuffer (10 << 20 , "test" )
339
+ buf := z .NewBuffer (10 << 20 , "test" )
340
340
defer buf .Release ()
341
341
for i := range str {
342
342
for j := 0 ; j < keyCount ; j ++ {
@@ -377,7 +377,7 @@ func TestStreamWriterCancel(t *testing.T) {
377
377
runBadgerTest (t , & opt , func (t * testing.T , db * DB ) {
378
378
str := []string {"a" , "a" , "b" , "b" , "c" , "c" }
379
379
ver := 1
380
- buf := z .NewBuffer (10 << 20 , "test" )
380
+ buf := z .NewBuffer (10 << 20 , "test" )
381
381
defer buf .Release ()
382
382
for i := range str {
383
383
kv := & pb.KV {
@@ -411,7 +411,7 @@ func TestStreamDone(t *testing.T) {
411
411
var val [10 ]byte
412
412
rand .Read (val [:])
413
413
for i := 0 ; i < 10 ; i ++ {
414
- buf := z .NewBuffer (10 << 20 , "test" )
414
+ buf := z .NewBuffer (10 << 20 , "test" )
415
415
defer buf .Release ()
416
416
kv1 := & pb.KV {
417
417
Key : []byte (fmt .Sprintf ("%d" , i )),
@@ -452,7 +452,7 @@ func TestSendOnClosedStream(t *testing.T) {
452
452
453
453
var val [10 ]byte
454
454
rand .Read (val [:])
455
- buf := z .NewBuffer (10 << 20 , "test" )
455
+ buf := z .NewBuffer (10 << 20 , "test" )
456
456
defer buf .Release ()
457
457
kv1 := & pb.KV {
458
458
Key : []byte (fmt .Sprintf ("%d" , 1 )),
@@ -475,7 +475,7 @@ func TestSendOnClosedStream(t *testing.T) {
475
475
require .NoError (t , db .Close ())
476
476
}()
477
477
// Send once stream is closed.
478
- buf1 := z .NewBuffer (10 << 20 , "test" )
478
+ buf1 := z .NewBuffer (10 << 20 , "test" )
479
479
defer buf1 .Release ()
480
480
kv1 = & pb.KV {
481
481
Key : []byte (fmt .Sprintf ("%d" , 2 )),
@@ -502,7 +502,7 @@ func TestSendOnClosedStream2(t *testing.T) {
502
502
503
503
var val [10 ]byte
504
504
rand .Read (val [:])
505
- buf := z .NewBuffer (10 << 20 , "test" )
505
+ buf := z .NewBuffer (10 << 20 , "test" )
506
506
defer buf .Release ()
507
507
kv1 := & pb.KV {
508
508
Key : []byte (fmt .Sprintf ("%d" , 1 )),
@@ -549,7 +549,7 @@ func TestStreamWriterEncrypted(t *testing.T) {
549
549
key := []byte ("mykey" )
550
550
value := []byte ("myvalue" )
551
551
552
- buf := z .NewBuffer (10 << 20 , "test" )
552
+ buf := z .NewBuffer (10 << 20 , "test" )
553
553
defer buf .Release ()
554
554
KVToBuffer (& pb.KV {
555
555
Key : key ,
@@ -578,3 +578,27 @@ func TestStreamWriterEncrypted(t *testing.T) {
578
578
require .NoError (t , db .Close ())
579
579
580
580
}
581
+
582
+ // Test that stream writer does not crashes with large values in managed mode. In managed mode, we
583
+ // don't write to value log.
584
+ func TestStreamWriterWithLargeValue (t * testing.T ) {
585
+ opts := DefaultOptions ("" )
586
+ opts .managedTxns = true
587
+ runBadgerTest (t , & opts , func (t * testing.T , db * DB ) {
588
+ buf := z .NewBuffer (10 << 20 , "test" )
589
+ defer buf .Release ()
590
+ val := make ([]byte , 10 << 20 )
591
+ _ , err := rand .Read (val )
592
+ require .NoError (t , err )
593
+ KVToBuffer (& pb.KV {
594
+ Key : []byte ("key" ),
595
+ Value : val ,
596
+ Version : 1 ,
597
+ }, buf )
598
+
599
+ sw := db .NewStreamWriter ()
600
+ require .NoError (t , sw .Prepare (), "sw.Prepare() failed" )
601
+ require .NoError (t , sw .Write (buf ), "sw.Write() failed" )
602
+ require .NoError (t , sw .Flush (), "sw.Flush() failed" )
603
+ })
604
+ }
0 commit comments