Skip to content
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

Fix Azure blobstore error instantiating AzureClient #1298

Merged

Conversation

groldan
Copy link
Member

@groldan groldan commented Aug 7, 2024

commit 72ce566 "Avoid infinite number of calls to listBlobs when doing prefix removals (e..g, gridset or layer removals)" changed the gwc AzureClient check for container existence from an attemp to create it to an attempt to get its properties before creating it.

When the container doesn't exist, the blocking call throws com.microsoft.azure.storage.blob.StorageException, which contains the status code.

Wrap that call in a try-catch block and get the status code from the exception.

commit 72ce566 "Avoid infinite number of calls to listBlobs when
doing prefix removals (e..g, gridset or layer removals)"
changed the gwc `AzureClient` check for container existence from an
attemp to create it to an attempt to get its properties before creating
it.

When the container doesn't exist, the blocking call throws
`com.microsoft.azure.storage.blob.StorageException`, which contains the
status code.

Wrap that call in a try-catch block and get the status code from the
exception.
groldan added a commit to groldan/geoserver-cloud that referenced this pull request Aug 7, 2024
Disable until the fix in
GeoWebCache/geowebcache#1298 is merged onto gwc
1.26-SNAPSHOT
@@ -93,8 +93,13 @@ public AzureClient(AzureBlobStoreData configuration) throws StorageException {
this.container = serviceURL.createContainerURL(containerName);
// no way to see if the containerURL already exists, try to create and see if
// we get a 409 CONFLICT
int status;
Copy link
Member

Choose a reason for hiding this comment

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

Tested interactively, I can't get the code to throw an exception? Different azure container setup maybe? Or a difference in dependencies?

Copy link
Member Author

Choose a reason for hiding this comment

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

My first thought was it would be a difference in dependencies, tried everything I could think of, but the only thing that worked was reverting gwc 1.26-SNAPSHOT to 1.25-SNAPSHOT.
So I debugged both and saw the difference, the patch is not in the 1.25.x branch.
BTW the exception happens against the Azurite test container when running integration tests in gscloud

Copy link
Member

Choose a reason for hiding this comment

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

Ok so you confirm the issue is not happening against an actual Azure storage, but the Azurite test container. Would be nice if the title was clear about it.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hi, I actually confirm the issue happens both with Azure and Azurite. The only difference is you may be always running the tests against an Azure container that already exists, whereas the Azurite test has to create it.
If you try a container name that does not exist in Azure you should get the same error.

@aaime aaime merged commit 111dcc7 into GeoWebCache:main Aug 19, 2024
7 checks passed
@groldan groldan deleted the azureclient_exception_when_container_not_found branch August 19, 2024 14:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants