Skip to content

Commit

Permalink
[CLIENT-2943] BatchGetOperate does not consider ops in single key tra…
Browse files Browse the repository at this point in the history
…nsforms
  • Loading branch information
khaf committed May 13, 2024
1 parent 0b73ae8 commit a593921
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions batch_command_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,18 @@ func (cmd *batchCommandGet) transactionType() transactionType {
func (cmd *batchCommandGet) executeSingle(client *Client) Error {
for _, offset := range cmd.batch.offsets {
var err Error
if cmd.objects == nil {
if (cmd.readAttr & _INFO1_NOBINDATA) == _INFO1_NOBINDATA {
cmd.records[offset], err = client.GetHeader(&cmd.policy.BasePolicy, cmd.keys[offset])
} else {
cmd.records[offset], err = client.Get(&cmd.policy.BasePolicy, cmd.keys[offset], cmd.binNames...)
if len(cmd.ops) > 0 {
// Validate that all operations are read
for i := range cmd.ops {
if cmd.ops[i].opType.isWrite {
return newError(types.PARAMETER_ERROR, "Write operations not allowed in batch read").setNode(cmd.node)
}
}
cmd.records[offset], err = client.Operate(cmd.policy.toWritePolicy(), cmd.keys[offset], cmd.ops...)
} else if (cmd.readAttr & _INFO1_NOBINDATA) == _INFO1_NOBINDATA {
cmd.records[offset], err = client.GetHeader(&cmd.policy.BasePolicy, cmd.keys[offset])
} else {
err = client.getObjectDirect(&cmd.policy.BasePolicy, cmd.keys[offset], cmd.objects[offset])
cmd.objectsFound[offset] = err == nil
cmd.records[offset], err = client.Get(&cmd.policy.BasePolicy, cmd.keys[offset], cmd.binNames...)
}
if err != nil {
// Key not found is NOT an error for batch requests
Expand All @@ -250,7 +253,7 @@ func (cmd *batchCommandGet) executeSingle(client *Client) Error {
}

func (cmd *batchCommandGet) Execute() Error {
if len(cmd.batch.offsets) == 1 {
if cmd.objects == nil && len(cmd.batch.offsets) == 1 {
return cmd.executeSingle(cmd.node.cluster.client)
}
return cmd.execute(cmd)
Expand Down

0 comments on commit a593921

Please sign in to comment.