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

Viacheslav Kabanovich (JIRA) issues at jboss.org
Mon Feb 29 15:55:00 EST 2016


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

Viacheslav Kabanovich edited comment on JBIDE-21731 at 2/29/16 3:54 PM:
------------------------------------------------------------------------

ServerSettingsViewModel.loadResources() loads all related resources in a non-ui thread so that they are available later when user interacts with ui. Image stream tags are used to compute deployment directory for a selected service. Failure happens when DeploymentResourceMapper is requested for all available image stream tags. At this moment there is no way to say, why a certain stream tag is not available. ProjectAdapterFake is notified by DeploymentResourceMapper about changes in connection, we could wait for it, but actually at this moment we do not know what it is to wait for. Therefore, I think that the problem can be solved by retrying several times to call createImageStreamTagsMap() catching OpenShiftException and reporting to monitor about currently experienced problem and attempt of retrying. All we need to do for that is to pass IProgressMonitor to ServerSettingsViewModel.loadResources() - it is available in the context calling this method. If certain number of retrials fails (three? five?), we can stop the process and set error status to wizard with problem description (and log the last exception, too). [~adietish], do you think it could work?



was (Author: scabanovich):
ServerSettingsViewModel.loadResources() loads all related resources in a non-ui thread so that they are available later when user interacts with ui. Image stream tags are used to compute deployment directory for a selected service. Failure happens when DeploymentResourceMapper is requested for all available image stream tags. At this moment there is no way to say, why a certain stream tag is not available. ProjectAdapterFake that is already is notified by DeploymentResourceMapper about changes in connection, we could wait for it, but actually at this moment we do not know what it is to wait for. Therefore, I think that the problem can be solved by retrying several times to call createImageStreamTagsMap() catching OpenShiftException and reporting to monitor about currently experienced problem and attempt of retrying. All we need to do for that is to pass IProgressMonitor to ServerSettingsViewModel.loadResources() - it is available in the context calling this method. If certain number of retrials fails (three? five?), we can stop the process and set error status to wizard with problem description (and log the last exception, too). [~adietish], do you think it could work?


> 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