Skip to content

Commit

Permalink
fix(artifacts): when committing artifacts, don't retry 409 Conflict e…
Browse files Browse the repository at this point in the history
…rrors (#4260)

Co-authored-by: Katia <katia@wandb.com>
Co-authored-by: Dmitry Duev <dima@wandb.com>
  • Loading branch information
3 people committed Nov 4, 2022
1 parent a3eec65 commit 7454cc8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 22 deletions.
29 changes: 15 additions & 14 deletions tests/unit_tests/test_wandb_artifacts_full.py
Expand Up @@ -222,19 +222,20 @@ def test_artifact_wait_failure(wandb_init, timeout):
run.finish()


def test_artifact_metadata_save(wandb_init):
def test_artifact_metadata_save(wandb_init, relay_server):
# Test artifact metadata sucessfully saved for len(numpy) > 32
dummy_metadata = np.array([0] * 33)
run = wandb_init()
artifact = wandb.Artifact(
name="art", type="dataset", metadata={"initMetadata": dummy_metadata}
)
run.log_artifact(artifact)
artifact.wait().metadata.update({"updateMetadata": dummy_metadata})
artifact.save()
saved_artifact = run.use_artifact("art:latest")
art_metadata = saved_artifact.metadata
assert "initMetadata" in art_metadata
assert "updateMetadata" in art_metadata
assert art_metadata["initMetadata"] == art_metadata["updateMetadata"]
run.finish()
with relay_server():
run = wandb_init()
artifact = wandb.Artifact(
name="art", type="dataset", metadata={"initMetadata": dummy_metadata}
)
run.log_artifact(artifact)
artifact.wait().metadata.update({"updateMetadata": dummy_metadata})
artifact.save()
saved_artifact = run.use_artifact("art:latest")
art_metadata = saved_artifact.metadata
assert "initMetadata" in art_metadata
assert "updateMetadata" in art_metadata
assert art_metadata["initMetadata"] == art_metadata["updateMetadata"]
run.finish()
8 changes: 0 additions & 8 deletions wandb/sdk/internal/internal_api.py
Expand Up @@ -2730,17 +2730,9 @@ def commit_artifact(self, artifact_id: str) -> "_Response":
"""
)

# retry conflict errors for 2 minutes, default to no_auth_retry
check_retry_fn = util.make_check_retry_fn(
check_fn=util.check_retry_conflict,
check_timedelta=datetime.timedelta(minutes=2),
fallback_retry_fn=util.no_retry_auth,
)

response: "_Response" = self.gql( # type: ignore
mutation,
variable_values={"artifactID": artifact_id},
check_retry_fn=check_retry_fn,
timeout=60,
)
return response
Expand Down

0 comments on commit 7454cc8

Please sign in to comment.