8000 fix: optimistic lock condition by NalinSajwan · Pull Request #26 · oolio-group/dynago · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
10000

fix: optimistic lock condition #26

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 1, 2025
Merged

Conversation

NalinSajwan
Copy link
Contributor
@NalinSajwan NalinSajwan commented Jun 30, 2025

Description

Fixes optimistic lock condition to consider possibility of version attribute being non existing.

Info on how attribute_not_exists function works:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.Functions

Fixes:

Bug in the optimistic lock condition where the PutItem request fails with error (if attribute does not exists):

Failed to Put itemoperation error DynamoDB: PutItem, https response error StatusCode: 400, RequestID: 90696dd0-a67b-4039-a03d-41a4663f5515, ConditionalCheckFailedException: The conditional request failed

Other information & screenshots:

  • Optimistic lock test case works (when item does not exist in DB): image

@NalinSajwan NalinSajwan marked this pull request as ready for review July 1, 2025 00:31
@Copilot Copilot AI review requested due to automatic review settings July 1, 2025 00:31
Copy link
@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR addresses a bug in the optimistic lock condition by updating the condition expression for DynamoDB PutItem requests to account for the non-existence of the version attribute. Key changes include:

  • Updating the condition expression in put_item.go to use "attribute_not_exists(#version) or #version = :oldVersion"
  • Removing the explicit creation of a new account item in tests/putitem_test.go
  • Refining the error variable assignment in the test file

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
tests/putitem_test.go Removed unnecessary account creation and refined variable assignment.
put_item.go Updated the optimistic lock condition expression to account for new items.
Comments suppressed due to low confidence (2)

put_item.go:24

  • The updated optimistic lock condition now correctly handles the case when the version attribute does not exist. Please confirm that this change fully aligns with the intended behavior for new item creation.
		condition := "attribute_not_exists(#version) or #version = :oldVersion"

tests/putitem_test.go:147

  • Using the short variable declaration improves clarity; however, please ensure that error handling remains consistent and any potential errors from GetItem are handled appropriately.
	err, _ := table.GetItem(ctx, pk, pk, &acc)

@shidil shidil merged commit 13b2e46 into main Jul 1, 2025
2 checks passed
@shidil shidil deleted the fix-optimistic-lock-condition branch July 1, 2025 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0