[MSP-4] Agent Open중에 UI가 닫히면 Exception이 발생

Subject
Agent Open중에 UI가 닫히면 Exception이 발생한다.
APPLIES TO:
MCCS version: 4.1
OS:
APPs:
Disk Type: shared or mirror, none




SYMPTOMS
아래와 같은 절차로 진행됨.(계속 나오는건 아님)
Auto Login으로 브라우저 접속된 상태 -> MCCS 서비스 재시작 -> 브라우저 리프레쉬 -> AutoLogin 되면서 MCCS에서 화면 리프레쉬
마지막 과정에서 리소스 Open -> 로그찍음 -> 닫힌 UISession으로 접근 -> Device is disposed Exception 발생 -> DetachedState로 남아있음.



CAUSE
15/03/12-17:31:32,695 | ata_EAgent | t.AbstractAgent: 609 | TRACE | org.eclipse.swt.SWTException: Device is disposed
org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:3639)
at org.eclipse.swt.SWT.error(SWT.java:3562)
at org.eclipse.swt.SWT.error(SWT.java:3533)
at org.eclipse.swt.widgets.Display.error(Display.java:2300)
at org.eclipse.swt.widgets.Display.asyncExec(Display.java:1051)
at com.mantech.mccs.console.session.ServerSession$1.run(ServerSession.java:191)
at org.eclipse.rap.rwt.internal.lifecycle.ContextUtil.runNonUIThreadWithFakeContext(ContextUtil.java:67)
at org.eclipse.rap.rwt.internal.service.UISessionImpl.exec(UISessionImpl.java:221)
at com.mantech.mccs.console.session.ServerSession.update(ServerSession.java:185)
at com.mantech.mccs.engine.client.GuiServer.add(GuiServer.java:69)
at com.mantech.mccs.engine.log.GuiAppender.append(GuiAppender.java:52)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.debug(Category.java:260)
at com.mantech.mccs.engine.state.DetachedState.open(DetachedState.java:34)
at com.mantech.mccs.engine.state.StateMachine.doOpen(StateMachine.java:531)
at com.mantech.mccs.engine.agent.AbstractAgent.processCommand(AbstractAgent.java:813)
at com.mantech.mccs.engine.agent.AbstractAgent.run(AbstractAgent.java:588)
at java.lang.Thread.run(Unknown Source)



SOLUTION

Resolution: Unresolved
Fix Version/s: None
수정방향: 콘솔에서 생긴 Exception이 엔진에 영향을 미치는 것은 바람직하지 않음.
GUIServer에서 UISession으로 데이터를 보낼 때는 Queue에 담았다가 다른 쓰레드에서 보내는 방식으로 분리시키는 것이 좋을듯