Skip to content

Commit

Permalink
allocate less and in standard size
Browse files Browse the repository at this point in the history
  • Loading branch information
gritzko committed Dec 30, 2024
1 parent ae8fc83 commit 3e38256
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 22 deletions.
17 changes: 2 additions & 15 deletions chotki.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,21 +124,8 @@ func (o *Options) SetDefaults() {
}

o.Merger = &pebble.Merger{
Name: "CRDT",
Merge: func(key, value []byte) (pebble.ValueMerger, error) {
/*if len(key) != 10 {
return nil, nil
}*/
target := make([]byte, len(value))
copy(target, value)
id, rdt := OKeyIdRdt(key)
pma := PebbleMergeAdaptor{
id: id,
rdt: rdt,
vals: [][]byte{target},
}
return &pma, nil
},
Name: "CRDT",
Merge: PebbleAdaptorMerge,
}

if o.Logger == nil {
Expand Down
40 changes: 33 additions & 7 deletions merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"io"
"slices"

"github.com/cockroachdb/pebble"
"github.com/drpcorg/chotki/rdx"
)

Expand All @@ -12,23 +13,42 @@ type Merger interface {
Merge(inputs [][]byte) []byte
}

func PebbleAdaptorMerge(key, value []byte) (pebble.ValueMerger, error) {
/*if len(key) != 10 {
return nil, nil
}*/
id, rdt := OKeyIdRdt(key)
pma := PebbleMergeAdaptor{
id: id,
rdt: rdt,
vals: make([][]byte, 0, 16),
bulk: make([]byte, 0, 4096),
}
pma.AddInput(value)
return &pma, nil
}

type PebbleMergeAdaptor struct {
id rdx.ID
rdt byte
old bool
vals [][]byte
bulk []byte
}

func (a *PebbleMergeAdaptor) AddInput(input []byte) {
l := len(a.bulk)
a.bulk = append(a.bulk, input...)
copy(a.bulk[l:], input)
a.vals = append(a.vals, a.bulk[l:])
}

func (a *PebbleMergeAdaptor) MergeNewer(value []byte) error {
target := make([]byte, len(value))
copy(target, value)
a.vals = append(a.vals, target)
a.AddInput(value)
return nil
}
func (a *PebbleMergeAdaptor) MergeOlder(value []byte) error {
target := make([]byte, len(value))
copy(target, value)
a.vals = append(a.vals, target)
a.AddInput(value)
a.old = true
return nil
}
Expand All @@ -42,5 +62,11 @@ func (a *PebbleMergeAdaptor) Finish(includesBase bool) (res []byte, cl io.Closer
return nil, nil, nil
}
res = rdx.Xmerge(a.rdt, inputs)
return res, nil, nil
return res, a, nil
}

func (a *PebbleMergeAdaptor) Close() error {
a.vals = nil
a.bulk = nil
return nil
}

0 comments on commit 3e38256

Please sign in to comment.