FHIR
FHIR copied to clipboard
Azure blob offload cannot connect to older instance of azurite
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.
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.
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.