[jbosstools-issues] [JBoss JIRA] (JBIDE-21817) Connection dialog: User is stuck by Sign In triggered via OpenShift 2 server adapter

Viacheslav Kabanovich (JIRA) issues at jboss.org
Mon Mar 7 10:46:00 EST 2016


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

Viacheslav Kabanovich commented on JBIDE-21817:
-----------------------------------------------

This code hags Eclipse when user pushes OK in dialog started from loading editor if it is activated at Eclipse start.
Job cannot be sheduled until event sent by push button is processed. But button wants to wait for job (that mocks progress monitor).
{code}
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;

public class SyncTest {

	public void execute() {
		Display.getDefault().syncExec(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("Modal dialog will be started");
				new MyDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).open();
				System.out.println("Modal dialog is completed");
			}
		});
	}
}

class MyDialog extends Dialog {

	protected MyDialog(Shell parentShell) {
		super(parentShell.getShell());		
	}
	
	@Override
	protected void okPressed() {
			Job job = new Job("test job") {
					@Override
					protected IStatus run(IProgressMonitor monitor) {
						System.out.println("Run job");
						return Status.OK_STATUS;
					}
				};
			job.schedule();
		while(job.getState() == Job.WAITING) {
			System.out.println("Waiting for job to start");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				break;
			}
		}
		super.okPressed();
	}
}

{code}
We can try to open an issue in Eclipse Bugzilla, but I am afraid it will be regected.

> Connection dialog: User is stuck by Sign In triggered via OpenShift 2 server adapter
> ------------------------------------------------------------------------------------
>
>                 Key: JBIDE-21817
>                 URL: https://issues.jboss.org/browse/JBIDE-21817
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: openshift
>    Affects Versions: 4.3.1.Beta2
>            Reporter: Viacheslav Kabanovich
>              Labels: openshift_v2
>             Fix For: 4.3.1.CR1
>
>         Attachments: jstack.txt, LockAtStart.png
>
>
> 1. Close Eclipse with 
>   - Server Editor for OpenShift 2 server adapter open;
>   - password for an Opebshift 2 connection not saved in the secure storage;
>   - OpenShift Explorer active (maybe not important).
> 2. Open Eclipse - Sign In to OpenShift wizard appears while the application window remains only partially loaded (see screenshot). Once this is reproduced, it is reproduced at each Eclipse start. 
> 3. Enter password and finish.
> 4. Progress appears but job does not start (I checked it in debugger) - ui jobs are locked.
> 5. Only red button cancelling connection is active, press it, wizard is unlocked (null pointer exception is fixed in JBIDE-21707).
> 6. Press Cancel, wizard is closed, Application window completes loading. - That 
> 7. Connection may be established by Refresh action.
> Stack trace that calls Sign In to Openshift wizard before main window is loaded, it shows that call is initiated by loading Server Editor:
> {code}
> Thread [main] (Suspended (breakpoint at line 274 in Window))	
> 	WizardDialog(Window).<init>(IShellProvider) line: 274	
> 	WizardDialog(Dialog).<init>(IShellProvider) line: 438	
> 	WizardDialog(Dialog).<init>(Shell) line: 419	
> 	WizardDialog(TrayDialog).<init>(Shell) line: 138	
> 	WizardDialog(TitleAreaDialog).<init>(Shell) line: 130	
> 	WizardDialog.<init>(Shell, IWizard) line: 308	
> 	WizardUtils.openWizardDialog(IWizard, Shell) line: 242	
> 	CredentialsPrompter$1.run() line: 44	
> 	UISynchronizer(Synchronizer).syncExec(Runnable) line: 186	
> 	UISynchronizer.syncExec(Runnable) line: 145	
> 	Display.syncExec(Runnable) line: 4634	
> 	CredentialsPrompter.promptAndAuthenticate(IConnection, Object) line: 33	
> 	LazyCredentialsPrompter.promptAndAuthenticate(IConnection, Object) line: 39	
> 	ExpressConnection.promptForCredentials() line: 284	
> 	ExpressConnection.createUser() line: 218	
> 	ExpressConnection.connect() line: 198	
> 	ExpressServerUtils.getApplication(IServerAttributes) line: 161	
> 	ExpressServerUtils.getDeployFolder(IServerAttributes) line: 251	
> 	ExpressServerEditorSection.initWidgets() line: 117	
> 	ExpressServerEditorSection.createSection(Composite) line: 100	
> 	OverviewEditorPart(ServerEditorPart).insertSections(Composite, String) line: 327	
> 	OverviewEditorPart.createPartControl(Composite) line: 279	
> 	ServerEditor(MultiPageEditorPart).addPage(int, IEditorPart, IEditorInput) line: 244	
> 	ServerEditor(MultiPageEditorPart).addPage(IEditorPart, IEditorInput) line: 214	
> 	ServerEditor.createPages() line: 247	
> 	ServerEditor(MultiPageEditorPart).createPartControl(Composite) line: 363	
> 	CompatibilityEditor(CompatibilityPart).createPartControl(IWorkbenchPart, Composite) line: 151	
> 	CompatibilityEditor.createPartControl(IWorkbenchPart, Composite) line: 99	
> 	CompatibilityEditor(CompatibilityPart).create() line: 341	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
> 	Method.invoke(Object, Object...) line: 498	
> 	MethodRequestor.execute() line: 56	
> 	InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 925	
> 	InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 906	
> 	InjectorImpl.inject(Object, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 148	
> 	InjectorImpl.internalMake(Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 372	
> 	InjectorImpl.make(Class<T>, PrimaryObjectSupplier) line: 291	
> 	ContextInjectionFactory.make(Class<T>, IEclipseContext) line: 162	
> 	ReflectionContributionFactory.createFromBundle(Bundle, IEclipseContext, IEclipseContext, URI) line: 105	
> 	ReflectionContributionFactory.doCreate(String, IEclipseContext, IEclipseContext) line: 74	
> 	ReflectionContributionFactory.create(String, IEclipseContext) line: 56	
> 	ContributedPartRenderer.createWidget(MUIElement, Object) line: 129	
> 	PartRenderingEngine.createWidget(MUIElement, Object) line: 976	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 652	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	StackRenderer.showTab(MUIElement) line: 1306	
> 	StackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 103	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 670	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	AreaRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine$1.run() line: 537	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement, Object, IEclipseContext) line: 521	
> 	ElementReferenceRenderer.createWidget(MUIElement, Object) line: 70	
> 	PartRenderingEngine.createWidget(MUIElement, Object) line: 976	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 652	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	SashRenderer.processContents(MElementContainer<MUIElement>) line: 151	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	SashRenderer.processContents(MElementContainer<MUIElement>) line: 151	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	SashRenderer.processContents(MElementContainer<MUIElement>) line: 151	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	PerspectiveRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	PerspectiveRenderer.processContents(MElementContainer<MUIElement>) line: 49	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	PerspectiveStackRenderer.showTab(MUIElement) line: 82	
> 	PerspectiveStackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 103	
> 	PerspectiveStackRenderer.postProcess(MUIElement) line: 63	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 670	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	SashRenderer.processContents(MElementContainer<MUIElement>) line: 151	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	WBWRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 72	
> 	WBWRenderer.processContents(MElementContainer<MUIElement>) line: 614	
> 	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 666	
> 	PartRenderingEngine.safeCreateGui(MUIElement) line: 758	
> 	PartRenderingEngine.access$0(PartRenderingEngine, MUIElement) line: 729	
> 	PartRenderingEngine$2.run() line: 723	
> 	SafeRunner.run(ISafeRunnable) line: 42	
> 	PartRenderingEngine.createGui(MUIElement) line: 707	
> 	PartRenderingEngine$4.run() line: 1066	
> 	Realm.runWithDefault(Realm, Runnable) line: 336	
> 	PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 1023	
> 	E4Workbench.createAndRunUI(MApplicationElement) line: 157	
> 	Workbench$5.run() line: 651	
> 	Realm.runWithDefault(Realm, Runnable) line: 336	
> 	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 595	
> 	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 150	
> 	IDEApplication.start(IApplicationContext) line: 138	
> 	EclipseAppHandle.run(Object) line: 196	
> 	EclipseAppLauncher.runApplication(Object) line: 134	
> 	EclipseAppLauncher.start(Object) line: 104	
> 	EclipseStarter.run(Object) line: 388	
> 	EclipseStarter.run(String[], Runnable) line: 243	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
> 	Method.invoke(Object, Object...) line: 498	
> 	Main.invokeFramework(String[], URL[]) line: 670	
> 	Main.basicRun(String[]) line: 609	
> 	Main.run(String[]) line: 1516	
> 	Main.main(String[]) line: 1489	
> {code}



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


More information about the jbosstools-issues mailing list