Search code examples
spring-cloud-dataflowspring-cloud-skipper

Is it required to set `packageVersion` of PackageIdentifier instance for DataFlowTemplate.streamOperations().updateStream(..) method?


I am instantiating PackageIdentifier class to pass it to DataFlowTemplate.streamOperations().updateStream(..) method, I set properties repositoryName and packageName, but I want to know if packageVersion is required property? Because I can see that it works without it. It is just, I had an exception, but not able to reproduce it again, and was wondering if packageVersion is the cause of this problem?:

Caused by: org.springframework.cloud.dataflow.rest.client.DataFlowClientException: Can not find package 'input-to-event-message-channel', version 'null'
    at org.springframework.cloud.dataflow.rest.client.VndErrorResponseErrorHandler.handleError(VndErrorResponseErrorHandler.java:65) ~[spring-cloud-dataflow-rest-client-2.0.2.RELEASE.jar:2.0.2.RELEASE]

Solution

  • The packageVersion is not required as far as there is a package with the desired name (in this case the "stream name") that exists in Skipper database.

    See: Stream.java#L112-L114.

    As for the error, it could be that you were using H2 instead of a persistent database for Skipper, and upon a restart, perhaps your client/test continued to attempt an upgrade on the transient database that doesn't have any footprint anymore.