[jbosstools-issues] [JBoss JIRA] (JBIDE-21731) Server Adapter: Error shown when image is not created/pushed yet, could be more user friendly

Andre Dietisheim (JIRA) issues at jboss.org
Tue Mar 1 16:53:00 EST 2016


    [ https://issues.jboss.org/browse/JBIDE-21731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13170440#comment-13170440 ] 

Andre Dietisheim edited comment on JBIDE-21731 at 3/1/16 4:52 PM:
------------------------------------------------------------------

[~scabanovich][~fbricon] The basic problem is that the tags only get available once the build is finished. In the "worst" case, the user tries to create a server adapter right after he triggered the application build. Almost impossible for the server adapter wizard to then be able to retrieve the tags, given the s2i builds usually take several 10s ot minutes. Simply retrying is imho not helping much, it would significantly augment the initial loading time of the wizard, which already is quite substantial. 
I believe the only way to fix this is to delay the tag retrieval as much as possible: Ideally we'd only retrieve the deployment-folder-label in the server adapter when it's publishing. We could block the publishing as long as the build of the app is not finished yet (since we'd not have a target to publish to anyhow). On the other hand we would then have to publish to the docker-image provided deployment folder silently, informing the user (via dialog) if we cannot extract the deployment folder (-label from docker image) and tell him to manually provide a folder or use a default that we guess. We could still try to retrieve it in the wizard, disabling the widget and informing/warning the user if we cant. 
Thoughts?


was (Author: adietish):
[~scabanovich][~fbricon] The basic problem is that the tags only get available once the build is finished. Simply retrying is imho not helping much it would significantly augment the initial loading time of the wizard, which already is quite substantial. I believe the only way to fix this is to delay the tag retrieval as much as possible: Ideally we'd only retrieve the deployment-folder-label in the server adapter when it's publishing. We could still try to retrieve it in the wizard, informing/warning the user if we cant. On the other hand we would then have to publish to the docker-image provided deployment folder silently, informing the user (via dialog) if we cannot extract the deployment folder (-label from docker image) and tell him to manually provide a folder or use a default that we guess. 
Thoughts?

> Server Adapter: Error shown when image is not created/pushed yet, could be more user friendly
> ---------------------------------------------------------------------------------------------
>
>                 Key: JBIDE-21731
>                 URL: https://issues.jboss.org/browse/JBIDE-21731
>             Project: Tools (JBoss Tools)
>          Issue Type: Enhancement
>          Components: openshift
>    Affects Versions: 4.3.1.CR1
>            Reporter: Marián Labuda
>              Labels: openshift_v3, server_adapter
>             Fix For: 4.3.1.CR1
>
>         Attachments: cannot_get_image.png
>
>
> When I create a new OS3 application and then I want to create a new server adapter, an image for this application has to be built and pushed to OpenShift's local image registry. If build is still running, what is often happening on internal OSE instance (it takes minutes - pushing of images), then there is an error message that loading of image failed. User without solid overview of OS3 background would not be able to figure out why it is happening, because even Image stream is shown, but the image is not there yet.
> Screenshot of error:
> !cannot_get_image.png!
> Full error log:
> {code}
> com.openshift.restclient.OpenShiftException: Could not get resource django-example:latest in namespace image: {
>   "kind": "Status",
>   "apiVersion": "v1",
>   "metadata": {},
>   "status": "Failure",
>   "message": "imageStreamTag \"django-example:latest\" not found",
>   "reason": "NotFound",
>   "details": {
>     "name": "django-example:latest",
>     "kind": "imageStreamTag"
>   },
>   "code": 404
> }
> 	at com.openshift.internal.restclient.DefaultClient.createOpenShiftException(DefaultClient.java:481)
> 	at com.openshift.internal.restclient.DefaultClient.get(DefaultClient.java:306)
> 	at org.jboss.tools.openshift.core.connection.Connection.getResource(Connection.java:378)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.lambda$5(DeploymentResourceMapper.java:106)
> 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> 	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.getImageStreamTagsFor(DeploymentResourceMapper.java:107)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.lambda$2(DeploymentResourceMapper.java:87)
> 	at java.util.stream.Collectors.lambda$toMap$213(Collectors.java:1321)
> 	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
> 	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.getAllImageStreamTags(DeploymentResourceMapper.java:85)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel$ProjectImageStreamTags.createImageStreamsMap(ServerSettingsViewModel.java:334)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel$ProjectImageStreamTags.<init>(ServerSettingsViewModel.java:327)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.lambda$1(ServerSettingsViewModel.java:279)
> 	at java.util.stream.Collectors.lambda$toMap$213(Collectors.java:1321)
> 	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
> 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.createImageStreamTagsMap(ServerSettingsViewModel.java:277)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.loadResources(ServerSettingsViewModel.java:261)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.loadResources(ServerSettingsViewModel.java:255)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsWizardFragment$15.run(ServerSettingsWizardFragment.java:695)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> Caused by: com.openshift.internal.restclient.http.NotFoundException: {
>   "kind": "Status",
>   "apiVersion": "v1",
>   "metadata": {},
>   "status": "Failure",
>   "message": "imageStreamTag \"django-example:latest\" not found",
>   "reason": "NotFound",
>   "details": {
>     "name": "django-example:latest",
>     "kind": "imageStreamTag"
>   },
>   "code": 404
> }
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.createException(UrlConnectionHttpClient.java:230)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:165)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:141)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.get(UrlConnectionHttpClient.java:103)
> 	at com.openshift.internal.restclient.DefaultClient.get(DefaultClient.java:302)
> 	... 36 more
> Caused by: java.io.FileNotFoundException: https://console.engint.openshift.com/oapi/v1/namespaces/image/imagestreamtags/django-example:latest
> 	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1836)
> 	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
> 	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:161)
> 	... 39 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)



More information about the jbosstools-issues mailing list