FHIR icon indicating copy to clipboard operation
FHIR copied to clipboard

Azure blob offload cannot connect to older instance of azurite

Open punktilious opened this issue 2 years ago • 1 comments

Describe the bug Running an older instance of azurite, after updating the Azure blob client libraries we can no longer connect:

Caused by: java.util.concurrent.ExecutionException: com.azure.storage.blob.models.BlobStorageException: Status code 400, "<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error>
  <Code>InvalidHeaderValue</Code>
  <Message>The value for one of the HTTP headers is not in the correct format.
RequestId:9ac1dcdd-f371-47b1-bad5-d04060811be4
Time:2022-08-09T23:06:16.790Z</Message>
  <HeaderName>x-ms-version</HeaderName>
  <HeaderValue>2021-06-08</HeaderValue>
</Error>"

Need to provide a way to specify the service version when constructing the Azure Blob client.

Environment Which version of IBM FHIR Server? 5.0.0-SNAPSHOT

To Reproduce Run older azurite container with newer client.

Expected behavior The FHIR server should be able to connect.

Additional context Mostly an issue with bit rot in local test environments. Updating the container would probably address this, but we should also allow configuration to control the service version used by the client, as offered by the blob client API.

punktilious avatar Aug 10 '22 07:08 punktilious

Also found that the payload offload parse call was ignoring the elements variable so no subsetting was supported, causing integration test failures with the Azure e2e updated added to the CI pipeline.

punktilious avatar Aug 10 '22 09:08 punktilious

I updated the demo env locally to use an old version of azurite (3.10.0). After this the fhir-server image was crashing during startup. I then updated the config to specify the specific API version supported by azurite 3.10.0 (2020-04-08) and it started working again.

I then proceeded to create a Patient resource (with payload still offloading enabled) and then read it back out with an _elements=identifier filter. This is working as expected.

lmsurpre avatar Aug 30 '22 12:08 lmsurpre