I have also tried a slightly different variant:
`
SubscriptionQueryResult<PackageRecord, PackageRecord> queryResult = subscribeToPackageRecord(id);
return queryResult.initialResult().doOnError(e → {
throw new RuntimeException(e);
}).mergeWith(queryResult.updates());
`
But it doesn’t seem to matter. In either case I get the following in the logs:
`
e[2m2018-11-19 16:38:12.159e[0;39m e[31mERROR [-,]e[0;39m e[35m3228e[0;39m e[2m—e[0;39m e[2m[ault-executor-0]e[0;39m e[36mo.a.queryhandling.SimpleQueryBus e[0;39m e[2m:e[0;39m An error happened while trying to report an initial result. Query: org.axonframework.axonserver.connector.query.subscription.GrpcBackedSubscriptionQueryMessage@18415140
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
at com.fedexx.pkg.query.PackageRecordProjector.handle(PackageRecordProjector.java:189)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.axonframework.messaging.annotation.AnnotatedMessageHandlingMember.handle(AnnotatedMessageHandlingMember.java:127)
at org.axonframework.messaging.annotation.WrappedMessageHandlingMember.handle(WrappedMessageHandlingMember.java:61)
at org.axonframework.queryhandling.annotation.AnnotationQueryHandlerAdapter.handle(AnnotationQueryHandlerAdapter.java:95)
at org.axonframework.queryhandling.annotation.AnnotationQueryHandlerAdapter.handle(AnnotationQueryHandlerAdapter.java:36)
at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:57)
at org.axonframework.messaging.interceptors.CorrelationDataInterceptor.handle(CorrelationDataInterceptor.java:65)
at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:55)
at org.axonframework.queryhandling.SimpleQueryBus.lambda$interceptAndInvoke$9(SimpleQueryBus.java:266)
at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:74)
at org.axonframework.messaging.unitofwork.UnitOfWork.executeWithResult(UnitOfWork.java:328)
at org.axonframework.queryhandling.SimpleQueryBus.interceptAndInvoke(SimpleQueryBus.java:264)
at org.axonframework.queryhandling.SimpleQueryBus.query(SimpleQueryBus.java:154)
at org.axonframework.queryhandling.SimpleQueryBus.lambda$subscriptionQuery$6(SimpleQueryBus.java:228)
at org.axonframework.queryhandling.MonoWrapper.lambda$create$0(MonoWrapper.java:62)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:54)
at reactor.core.publisher.MonoLift.subscribe(MonoLift.java:46)
at reactor.core.publisher.Mono.subscribe(Mono.java:3080)
at reactor.core.publisher.Mono.subscribeWith(Mono.java:3188)
at reactor.core.publisher.Mono.subscribe(Mono.java:3074)
at reactor.core.publisher.Mono.subscribe(Mono.java:3041)
at reactor.core.publisher.Mono.subscribe(Mono.java:3013)
at org.axonframework.axonserver.connector.query.subscription.SubscriptionQueryRequestTarget.getInitialResult(SubscriptionQueryRequestTarget.java:99)
at org.axonframework.axonserver.connector.query.subscription.SubscriptionQueryRequestTarget.onSubscriptionQueryRequest(SubscriptionQueryRequestTarget.java:70)
at org.axonframework.axonserver.connector.query.AxonServerQueryBus$QueryProvider$1.lambda$onNext$0(AxonServerQueryBus.java:369)
at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:891)
at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:404)
at org.axonframework.axonserver.connector.query.AxonServerQueryBus$QueryProvider$1.onNext(AxonServerQueryBus.java:369)
at org.axonframework.axonserver.connector.query.AxonServerQueryBus$QueryProvider$1.onNext(AxonServerQueryBus.java:364)
at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onMessage(ClientCalls.java:407)
at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33)
at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:519)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
`
Also, here’s what the client sees when the request is valid:
`
troyh@piehole:~/fx/repos/recover (pi2.4 *%=)$ curl -v --request GET --url http://recover-api:8081/packages/a6026414-798e-41f4-80e0-4edee5ba57b0 --header ‘authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVcElUaXNJQnIxck1TblVpV0RZdGptZXJ2cmluQUNiN3dKU29lME15REpNIn0.eyJqdGkiOiJjMjc5ODg4Mi1lOTM4LTQ5MDItODNlOS04NWYzYmY5MzcyNTMiLCJleHAiOjE1NDI2OTA0OTIsIm5iZiI6MCwiaWF0IjoxNTQyNjU0NDk0LCJpc3MiOiJodHRwOi8vcmVjb3Zlci1zc286ODI4MC9hdXRoL3JlYWxtcy9yZWNvdmVyIiwiYXVkIjoicmVjb3Zlci1hcHAiLCJzdWIiOiJkODAwNTIyMy04MjFmLTRiMjktYTYyZC03NDMwN2EzMmU0ZTciLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJyZWNvdmVyLWFwcCIsIm5vbmNlIjoiM2E4MTMzYjAtOGU0MS00YjU4LThmNTYtZmJkY2U3OWEzNDU5IiwiYXV0aF90aW1lIjoxNTQyNjU0NDkyLCJzZXNzaW9uX3N0YXRlIjoiODYxMGQyMjYtMjNlZC00YzMwLTk4MjEtNjZlY2IzNjI2ZDBlIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vZG9ja2VyLmc0LnFhLmxhbjo4MDgyIiwiaHR0cDovL3JlY292ZXItd2ViOjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiVHJveSBIYXJ0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoidHJveWgiLCJnaXZlbl9uYW1lIjoiVHJveSIsImZhbWlseV9uYW1lIjoiSGFydCIsImVtYWlsIjoidHJveS5oYXJ0QGdtYWlsLmNvbSJ9.UgSzZbMlBYiTTz6SCHDdQ4B4BnHcOTSznORBcdu54NTvkZipLVx3SKt7M1BaqNNpMkTA6pqnFb-wSwJ-9mTrkQqPR9c–HoXidilwRgWLzemeLI65vNY9VTEb4xk6TUm2sRlT7-CTRZNuSogtvPtqkfUZsLkc1IQO_3BRdTufV_07u48uBwpBIdz-sriZwdYox4zTP4gQmaUqbNlcsw39BUt3bvWT3Pk1Yvcxg_4mRr4Yi1aVY0tsa3VqCCycl-XjB0EQ3Nzf5cg6dyCjU-KIM81qgmdoiiVEO5hlmOZpoBoC7tvqGh_eQpcbonYXoBwVQKtWzLzz3C5bvh4aug55Q’
Note: Unnecessary use of -X or --request, GET is already inferred.
- Trying 127.0.0.1…
- Connected to recover-api (127.0.0.1) port 8081 (#0)
GET /packages/a6026414-798e-41f4-80e0-4edee5ba57b0 HTTP/1.1
Host: recover-api:8081
User-Agent: curl/7.47.0
Accept: /
authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVcElUaXNJQnIxck1TblVpV0RZdGptZXJ2cmluQUNiN3dKU29lME15REpNIn0.eyJqdGkiOiJjMjc5ODg4Mi1lOTM4LTQ5MDItODNlOS04NWYzYmY5MzcyNTMiLCJleHAiOjE1NDI2OTA0OTIsIm5iZiI6MCwiaWF0IjoxNTQyNjU0NDk0LCJpc3MiOiJodHRwOi8vcmVjb3Zlci1zc286ODI4MC9hdXRoL3JlYWxtcy9yZWNvdmVyIiwiYXVkIjoicmVjb3Zlci1hcHAiLCJzdWIiOiJkODAwNTIyMy04MjFmLTRiMjktYTYyZC03NDMwN2EzMmU0ZTciLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJyZWNvdmVyLWFwcCIsIm5vbmNlIjoiM2E4MTMzYjAtOGU0MS00YjU4LThmNTYtZmJkY2U3OWEzNDU5IiwiYXV0aF90aW1lIjoxNTQyNjU0NDkyLCJzZXNzaW9uX3N0YXRlIjoiODYxMGQyMjYtMjNlZC00YzMwLTk4MjEtNjZlY2IzNjI2ZDBlIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vZG9ja2VyLmc0LnFhLmxhbjo4MDgyIiwiaHR0cDovL3JlY292ZXItd2ViOjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiVHJveSBIYXJ0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoidHJveWgiLCJnaXZlbl9uYW1lIjoiVHJveSIsImZhbWlseV9uYW1lIjoiSGFydCIsImVtYWlsIjoidHJveS5oYXJ0QGdtYWlsLmNvbSJ9.UgSzZbMlBYiTTz6SCHDdQ4B4BnHcOTSznORBcdu54NTvkZipLVx3SKt7M1BaqNNpMkTA6pqnFb-wSwJ-9mTrkQqPR9c–HoXidilwRgWLzemeLI65vNY9VTEb4xk6TUm2sRlT7-CTRZNuSogtvPtqkfUZsLkc1IQO_3BRdTufV_07u48uBwpBIdz-sriZwdYox4zTP4gQmaUqbNlcsw39BUt3bvWT3Pk1Yvcxg_4mRr4Yi1aVY0tsa3VqCCycl-XjB0EQ3Nzf5cg6dyCjU-KIM81qgmdoiiVEO5hlmOZpoBoC7tvqGh_eQpcbonYXoBwVQKtWzLzz3C5bvh4aug55Q
< HTTP/1.1 200
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Content-Type: text/event-stream;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Mon, 19 Nov 2018 23:46:19 GMT
<
data:{“packageId”:“a6026414-798e-41f4-80e0-4edee5ba57b0”,“inventoryItemId”:“PKG-20181119-007502039”,“aggregateVersion”:1,“opCo”:“GROUND”,“weightDim”:{“weight”:38.0,“unitsWeight”:“LBS”,“length”:7.0,“width”:14.0,“height”:12.0,“unitsDim”:“IN”},“originInfo”:{“discoveryFacilityId”:“JDYK”,“originalTrackingNumber”:null,“originalMPSParentTrackingNumber”:null,“transferTrackingNumbers”:[“123456798012”]},“packageType”:“OVERGOOD”,“issueType”:“OVERGOOD_WITH_PACKAGING”,“contributingCauses”:[“LABEL_BELT_BURN”,“TRACKING_NUMBER_REMOVED”],“packaging”:{“attributeValues”:{“PACKAGING_TYPE”:[“BAG_LG_POLY”]},“flags”:},“contents”:,“createdBy”:“AGENT”,“createdInstant”:1542667760.882000000,“lastModifiedBy”:“SYSTEM”,“lastModifiedInstant”:1542667765.064000000,“contentCount”:0}
`
And this is what the client seems when the request does properly identify the model:
`
troyh@piehole:~/fx/repos/recover (pi2.4 *%=)$ curl -v --request GET --url http://recover-api:8081/packages/xa6026414-798e-41f4-80e0-4edee5ba57b0 --header ‘authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVcElUaXNJQnIxck1TblVpV0RZdGptZXJ2cmluQUNiN3dKU29lME15REpNIn0.eyJqdGkiOiJjMjc5ODg4Mi1lOTM4LTQ5MDItODNlOS04NWYzYmY5MzcyNTMiLCJleHAiOjE1NDI2OTA0OTIsIm5iZiI6MCwiaWF0IjoxNTQyNjU0NDk0LCJpc3MiOiJodHRwOi8vcmVjb3Zlci1zc286ODI4MC9hdXRoL3JlYWxtcy9yZWNvdmVyIiwiYXVkIjoicmVjb3Zlci1hcHAiLCJzdWIiOiJkODAwNTIyMy04MjFmLTRiMjktYTYyZC03NDMwN2EzMmU0ZTciLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJyZWNvdmVyLWFwcCIsIm5vbmNlIjoiM2E4MTMzYjAtOGU0MS00YjU4LThmNTYtZmJkY2U3OWEzNDU5IiwiYXV0aF90aW1lIjoxNTQyNjU0NDkyLCJzZXNzaW9uX3N0YXRlIjoiODYxMGQyMjYtMjNlZC00YzMwLTk4MjEtNjZlY2IzNjI2ZDBlIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vZG9ja2VyLmc0LnFhLmxhbjo4MDgyIiwiaHR0cDovL3JlY292ZXItd2ViOjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiVHJveSBIYXJ0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoidHJveWgiLCJnaXZlbl9uYW1lIjoiVHJveSIsImZhbWlseV9uYW1lIjoiSGFydCIsImVtYWlsIjoidHJveS5oYXJ0QGdtYWlsLmNvbSJ9.UgSzZbMlBYiTTz6SCHDdQ4B4BnHcOTSznORBcdu54NTvkZipLVx3SKt7M1BaqNNpMkTA6pqnFb-wSwJ-9mTrkQqPR9c–HoXidilwRgWLzemeLI65vNY9VTEb4xk6TUm2sRlT7-CTRZNuSogtvPtqkfUZsLkc1IQO_3BRdTufV_07u48uBwpBIdz-sriZwdYox4zTP4gQmaUqbNlcsw39BUt3bvWT3Pk1Yvcxg_4mRr4Yi1aVY0tsa3VqCCycl-XjB0EQ3Nzf5cg6dyCjU-KIM81qgmdoiiVEO5hlmOZpoBoC7tvqGh_eQpcbonYXoBwVQKtWzLzz3C5bvh4aug55Q’
Note: Unnecessary use of -X or --request, GET is already inferred.
- Trying 127.0.0.1…
- Connected to recover-api (127.0.0.1) port 8081 (#0)
GET /packages/xa6026414-798e-41f4-80e0-4edee5ba57b0 HTTP/1.1
Host: recover-api:8081
User-Agent: curl/7.47.0
Accept: /
authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVcElUaXNJQnIxck1TblVpV0RZdGptZXJ2cmluQUNiN3dKU29lME15REpNIn0.eyJqdGkiOiJjMjc5ODg4Mi1lOTM4LTQ5MDItODNlOS04NWYzYmY5MzcyNTMiLCJleHAiOjE1NDI2OTA0OTIsIm5iZiI6MCwiaWF0IjoxNTQyNjU0NDk0LCJpc3MiOiJodHRwOi8vcmVjb3Zlci1zc286ODI4MC9hdXRoL3JlYWxtcy9yZWNvdmVyIiwiYXVkIjoicmVjb3Zlci1hcHAiLCJzdWIiOiJkODAwNTIyMy04MjFmLTRiMjktYTYyZC03NDMwN2EzMmU0ZTciLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJyZWNvdmVyLWFwcCIsIm5vbmNlIjoiM2E4MTMzYjAtOGU0MS00YjU4LThmNTYtZmJkY2U3OWEzNDU5IiwiYXV0aF90aW1lIjoxNTQyNjU0NDkyLCJzZXNzaW9uX3N0YXRlIjoiODYxMGQyMjYtMjNlZC00YzMwLTk4MjEtNjZlY2IzNjI2ZDBlIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vZG9ja2VyLmc0LnFhLmxhbjo4MDgyIiwiaHR0cDovL3JlY292ZXItd2ViOjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiVHJveSBIYXJ0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoidHJveWgiLCJnaXZlbl9uYW1lIjoiVHJveSIsImZhbWlseV9uYW1lIjoiSGFydCIsImVtYWlsIjoidHJveS5oYXJ0QGdtYWlsLmNvbSJ9.UgSzZbMlBYiTTz6SCHDdQ4B4BnHcOTSznORBcdu54NTvkZipLVx3SKt7M1BaqNNpMkTA6pqnFb-wSwJ-9mTrkQqPR9c–HoXidilwRgWLzemeLI65vNY9VTEb4xk6TUm2sRlT7-CTRZNuSogtvPtqkfUZsLkc1IQO_3BRdTufV_07u48uBwpBIdz-sriZwdYox4zTP4gQmaUqbNlcsw39BUt3bvWT3Pk1Yvcxg_4mRr4Yi1aVY0tsa3VqCCycl-XjB0EQ3Nzf5cg6dyCjU-KIM81qgmdoiiVEO5hlmOZpoBoC7tvqGh_eQpcbonYXoBwVQKtWzLzz3C5bvh4aug55Q
< HTTP/1.1 200
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Content-Type: text/event-stream;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Mon, 19 Nov 2018 23:41:55 GMT
<
`