From d396328282f4973f9a67879e39f70262a0259d5c Mon Sep 17 00:00:00 2001 From: Jim Kalafut Date: Fri, 23 Mar 2018 09:42:35 -0700 Subject: [PATCH] Replace Batch operation in Cassandra Delete() (#4054) This fixes failing Cassandra backend tests. It is also probably the better route, since Batch operations aren't the preferred approach unless necessary (https://docs.datastax.com/en/cql/3.3/cql/cql_using/useBatch.html). --- physical/cassandra/cassandra.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/physical/cassandra/cassandra.go b/physical/cassandra/cassandra.go index 2a8f87e06f..51b3d47475 100644 --- a/physical/cassandra/cassandra.go +++ b/physical/cassandra/cassandra.go @@ -294,13 +294,21 @@ func (c *CassandraBackend) Delete(ctx context.Context, key string) error { defer metrics.MeasureSince([]string{"cassandra", "delete"}, time.Now()) stmt := fmt.Sprintf(`DELETE FROM "%s" WHERE bucket = ? AND key = ?`, c.table) - batch := gocql.NewBatch(gocql.LoggedBatch) - for _, bucket := range c.buckets(key) { - batch.Entries = append(batch.Entries, gocql.BatchEntry{ - Stmt: stmt, - Args: []interface{}{bucket, key}}) + results := make(chan error) + buckets := c.buckets(key) + + for _, bucket := range buckets { + go func(bucket string) { + results <- c.sess.Query(stmt, bucket, key).Exec() + }(bucket) } - return c.sess.ExecuteBatch(batch) + + for i := 0; i < len(buckets); i++ { + if err := <-results; err != nil { + return err + } + } + return nil } // List is used ot list all the keys under a given