-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Description
Problem Statement
if resource id is string, bulk export with _includeHistory parameter, failed step[write-to-binaries], throw InternalErrorException: HAPI-2223: For input string.
Steps to Reproduce
Test Environment: 8.5.7-SNAPSHOT
- enable
FHIR Bulk Export Enabled
setting in persistence module - create a Patient, id is string, such as PUT /Patient/p1
- async POST /$export
{
"resourceType": "Parameters",
"parameter": [
{
"name": "_outputFormat",
"valueString": "application/fhir+ndjson"
},
{
"valueString": "Patient",
"name": "_type"
},
{
"name": "_includeHistory",
"valueBoolean": true
}
]
}
Observed Results
bulk export failed
ca.uhn.fhir.rest.server.exceptions.InternalErrorException: HAPI-2223: For input string: "p1"
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService.invokeCallableAndHandleAnyException(HapiTransactionService.java:675)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService$ExecutionBuilder.lambda$execute$1(HapiTransactionService.java:554)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService.doExecuteCallback(HapiTransactionService.java:444)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService.doExecuteInTransaction(HapiTransactionService.java:351)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService.doExecute(HapiTransactionService.java:288)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService$ExecutionBuilder.execute(HapiTransactionService.java:560)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService$ExecutionBuilder.execute(HapiTransactionService.java:555)
at ca.uhn.fhir.jpa.search.PersistedJpaIdSearchBundleProvider.getResources(PersistedJpaIdSearchBundleProvider.java:103)
at ca.uhn.fhir.jpa.search.PersistedJpaIdSearchBundleProvider.getResources(PersistedJpaIdSearchBundleProvider.java:89)
at ca.uhn.fhir.batch2.jobs.export.ExpandResourceAndWriteBinaryStep.consumeHistoryInBatches(ExpandResourceAndWriteBinaryStep.java:274)
at ca.uhn.fhir.batch2.jobs.export.ExpandResourceAndWriteBinaryStep.processHistoryResources(ExpandResourceAndWriteBinaryStep.java:227)
at ca.uhn.fhir.batch2.jobs.export.ExpandResourceAndWriteBinaryStep.fetchResourcesByIdAndConsumeThem(ExpandResourceAndWriteBinaryStep.java:198)
at ca.uhn.fhir.batch2.jobs.export.ExpandResourceAndWriteBinaryStep.expandResourcesFromList(ExpandResourceAndWriteBinaryStep.java:182)
at ca.uhn.fhir.batch2.jobs.export.ExpandResourceAndWriteBinaryStep.run(ExpandResourceAndWriteBinaryStep.java:166)
at ca.uhn.fhir.batch2.coordinator.StepExecutor.executeStep(StepExecutor.java:63)
at ca.uhn.fhir.batch2.coordinator.WorkChunkProcessor.doExecution(WorkChunkProcessor.java:107)
at ca.uhn.fhir.batch2.coordinator.JobStepExecutor.executeStep(JobStepExecutor.java:85)
at ca.uhn.fhir.batch2.coordinator.WorkChannelMessageListener.lambda$handleWorkChannelMessage$1(WorkChannelMessageListener.java:274)
at ca.uhn.fhir.interceptor.api.IBaseInterceptorBroadcaster.lambda$runWithFilterHooks$0(IBaseInterceptorBroadcaster.java:75)
at ca.uhn.fhir.interceptor.executor.SupplierFilterHookWrapper$SupplierRunnable.run(SupplierFilterHookWrapper.java:72)
at ca.cdr.pers.interceptors.JobInstanceInterceptor$Batch2WorkChunkProcessFilter.wrapCall(JobInstanceInterceptor.java:147)
at ca.uhn.fhir.interceptor.executor.SupplierFilterHookWrapper.get(SupplierFilterHookWrapper.java:46)
at ca.uhn.fhir.interceptor.api.IBaseInterceptorBroadcaster.runWithFilterHooks(IBaseInterceptorBroadcaster.java:96)
at ca.uhn.fhir.interceptor.api.IBaseInterceptorBroadcaster.runWithFilterHooks(IBaseInterceptorBroadcaster.java:74)
at ca.uhn.fhir.batch2.coordinator.WorkChannelMessageListener.lambda$handleWorkChannelMessage$2(WorkChannelMessageListener.java:276)
at java.base/java.util.Optional.ifPresentOrElse(Optional.java:196)
at ca.uhn.fhir.batch2.coordinator.WorkChannelMessageListener.handleWorkChannelMessage(WorkChannelMessageListener.java:263)
at ca.uhn.fhir.batch2.coordinator.WorkChannelMessageListener.handleMessage(WorkChannelMessageListener.java:81)
at ca.uhn.fhir.broker.jms.SpringMessagingMessageHandlerAdapter.handleMessage(SpringMessagingMessageHandlerAdapter.java:82)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:115)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:133)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:106)
at org.springframework.integration.jms.SubscribableJmsChannel$DispatchingMessageListener.onMessage(SubscribableJmsChannel.java:227)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:814)
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:746)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:721)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:333)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1257)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1247)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1140)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NumberFormatException: For input string: "p1"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Long.parseLong(Long.java:711)
at java.base/java.lang.Long.parseLong(Long.java:836)
at ca.uhn.fhir.model.primitive.IdDt.getIdPartAsLong(IdDt.java:286)
at ca.uhn.fhir.jpa.dao.HistoryBuilder.lambda$addResourceIdsFiltering$0(HistoryBuilder.java:284)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
at ca.uhn.fhir.jpa.dao.HistoryBuilder.addResourceIdsFiltering(HistoryBuilder.java:285)
at ca.uhn.fhir.jpa.dao.HistoryBuilder.addPredicatesToQuery(HistoryBuilder.java:236)
at ca.uhn.fhir.jpa.dao.HistoryBuilder.fetchEntities(HistoryBuilder.java:143)
at ca.uhn.fhir.jpa.search.PersistedJpaIdSearchBundleProvider.lambda$getResources$0(PersistedJpaIdSearchBundleProvider.java:114)
at ca.uhn.fhir.jpa.dao.tx.HapiTransactionService.invokeCallableAndHandleAnyException(HapiTransactionService.java:671)
Expected Results
bulk export resources successfully when resource id is string
Metadata
Metadata
Assignees
Labels
No labels