Remove unused backend.Batch interface (#31941)

Only two backends implemented the interface and it was only being
used by tests.
This commit is contained in:
rosstimothy 2023-09-15 09:34:26 -04:00 committed by GitHub
parent 47cb793a17
commit 4aa7470a74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 2 additions and 84 deletions

View file

@ -139,14 +139,6 @@ func StreamRange(ctx context.Context, bk Backend, startKey, endKey []byte, pageS
})
}
// Batch implements some batch methods
// that are not mandatory for all interfaces,
// only the ones used in bulk operations.
type Batch interface {
// PutRange puts range of items in one transaction
PutRange(ctx context.Context, items []Item) error
}
// Lease represents a lease on the item that can be used
// to extend item's TTL without updating its contents.
//

View file

@ -100,7 +100,7 @@ type Config struct {
// Journal sets the journal_mode pragma
Journal string `json:"journal,omitempty"`
// Mirror turns on mirror mode for the backend,
// which will use record IDs for Put and PutRange passed from
// which will use record IDs for Put passed from
// the resources, not generate a new one
Mirror bool `json:"mirror"`
}
@ -583,23 +583,6 @@ func (l *Backend) Import(ctx context.Context, items []backend.Item) error {
return nil
}
// PutRange puts range of items into backend (creates if items doe not
// exists, updates it otherwise)
func (l *Backend) PutRange(ctx context.Context, items []backend.Item) error {
for i := range items {
if items[i].Key == nil {
return trace.BadParameter("missing parameter key in item %v", i)
}
}
err := l.inTransaction(ctx, func(tx *sql.Tx) error {
return l.putRangeInTransaction(ctx, tx, items, false)
})
if err != nil {
return trace.Wrap(err)
}
return nil
}
func (l *Backend) putRangeInTransaction(ctx context.Context, tx *sql.Tx, items []backend.Item, forceEventsOff bool) error {
var eventsStmt *sql.Stmt
var err error

View file

@ -61,7 +61,7 @@ type Config struct {
// BufferSize sets up event buffer size
BufferSize int
// Mirror mode is used when the memory backend is used for caching. In mirror
// mode, record IDs for Put and PutRange requests are re-used (instead of
// mode, record IDs for Put requests are re-used (instead of
// generating fresh ones) and expiration is turned off.
Mirror bool
}
@ -243,33 +243,6 @@ func (m *Memory) Put(ctx context.Context, i backend.Item) (*backend.Lease, error
return m.newLease(i), nil
}
// PutRange puts range of items into backend (creates if items do not
// exist, updates it otherwise)
func (m *Memory) PutRange(ctx context.Context, items []backend.Item) error {
for i := range items {
if items[i].Key == nil {
return trace.BadParameter("missing parameter key in item %v", i)
}
}
m.Lock()
defer m.Unlock()
m.removeExpired()
for _, item := range items {
event := backend.Event{
Type: types.OpPut,
Item: item,
}
if !m.Mirror {
event.Item.ID = m.generateID()
}
m.processEvent(event)
if !m.EventsOff {
m.buf.Emit(event)
}
}
return nil
}
// Delete deletes item by key, returns NotFound error
// if item does not exist
func (m *Memory) Delete(ctx context.Context, key []byte) error {

View file

@ -141,10 +141,6 @@ func RunBackendComplianceSuite(t *testing.T, newBackend Constructor) {
testDeleteRange(t, newBackend)
})
t.Run("PutRange", func(t *testing.T) {
testPutRange(t, newBackend)
})
t.Run("CompareAndSwap", func(t *testing.T) {
testCompareAndSwap(t, newBackend)
})
@ -362,32 +358,6 @@ func testDeleteRange(t *testing.T, newBackend Constructor) {
RequireItems(t, []backend.Item{a, b}, result.Items)
}
// testPutRange tests scenarios with put range
func testPutRange(t *testing.T, newBackend Constructor) {
uut, _, err := newBackend()
require.NoError(t, err)
defer func() { require.NoError(t, uut.Close()) }()
batchUut, ok := uut.(backend.Batch)
if !ok {
t.Skip("Backend should support Batch interface for this test")
}
ctx := context.Background()
prefix := MakePrefix()
a := backend.Item{Key: prefix("/prefix/a"), Value: []byte("val a")}
b := backend.Item{Key: prefix("/prefix/b"), Value: []byte("val b")}
// add one element that should not show up (i.e. a duplicate `a`)
err = batchUut.PutRange(ctx, []backend.Item{a, b, a})
require.NoError(t, err)
// prefix range fetch
result, err := uut.GetRange(ctx, prefix("/prefix"), backend.RangeEnd(prefix("/prefix")), backend.NoLimit)
require.NoError(t, err)
RequireItems(t, []backend.Item{a, b}, result.Items)
}
// testCompareAndSwap tests compare and swap functionality
func testCompareAndSwap(t *testing.T, newBackend Constructor) {
uut, _, err := newBackend()