Hi,

Daemon Thread [http-nio-8080-exec-4] (Suspended (breakpoint at line 84
in EditorEndpoint))

    owns: Object  (id=16796)

    owns: NioEndpoint$NioSocketWrapper  (id=16797)

    EditorEndpoint.onError(Throwable) line: 84

    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: 567

    PojoEndpointServer(PojoEndpointBase).onError(Session, Throwable) line: 133

    WsSession.sendCloseMessage(CloseReason) line: 619

    WsSession.onClose(CloseReason) line: 526

    WsFrameServer(WsFrameBase).processDataControl() line: 348

    WsFrameServer(WsFrameBase).processData() line: 290

    WsFrameServer(WsFrameBase).processInputBuffer() line: 130

    WsFrameServer.onDataAvailable() line: 70

    WsHttpUpgradeHandler.upgradeDispatch(SocketEvent) line: 148

    UpgradeProcessorInternal.dispatch(SocketEvent) line: 54

    
UpgradeProcessorInternal(AbstractProcessorLight).process(SocketWrapperBase<?>,
SocketEvent) line: 53

    AbstractProtocol$ConnectionHandler<S>.process(SocketWrapperBase<S>,
SocketEvent) line: 789

    NioEndpoint$SocketProcessor.doRun() line: 1437

    NioEndpoint$SocketProcessor(SocketProcessorBase<S>).run() line: 49

    ThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker)
line: 1128

    ThreadPoolExecutor$Worker.run() line: 628

    TaskThread$WrappingRunnable.run() line: 61

    TaskThread(Thread).run() line: 835



That is a stack that we encounter which i find quite strange
it seems to me that WsFrameBase.processDataControl

does a wsSession.onClose(new CloseReason(Util.getCloseCode(code), reason));

when it gets an op_code close

that sounds reasonably but the problem is WsSession will call when it was
in a open state an sendCloseMessage:

if (state == State.OPEN) { state = State.OUTPUT_CLOSED;
sendCloseMessage(closeReason);


problem is it is closed so this will result in a exception (broken pipe
stuff) when that is called

As far as i can understand it should not try to send a close message at
that point, because the close did already happen from the client side..
I guess if onclose was called programatically from the server side then it
is logical.


-- 
Johan Compagner
Servoy

Reply via email to