@Disabled("Failing and don't really know what this test tries to verify") @Test public void waitForWorkersOnStopDoesNotDeadlockWithUnfortunatelyTimedDisconnectReceivedByReceiver() throws Exception { StubISOChannel channel = new StubISOChannel(); Space space = spy(new TSpace()); ThreadTrap trap = new ThreadTrap(RECEIVER_THREAD_NAME).delegateAfterCatchCall().delegateAfterReleaseCall(); trap.catchVictim().when(space).out(eq(RECONNECT_SPACE_KEY), any(), eq(RECONNECT_DELAY)); trap.release().when(space).out(eq(READY_SPACE_KEY), not(isA(Date.class))); channelAdaptor = configureAndStart(new ChannelAdaptorWithStubSpace(channel, space)); waitForSenderAndReceiverToStart(); channel.waitForReceiverToBlockInReceive(); channel.disconnect(); assertThat("Receiver did not call sp.out(" + RECONNECT_SPACE_KEY + ", new Object())", trap.catchesVictim(), is(true)); assertCallToStopCompletes(1); }
protected void disconnect () { synchronized (disconnectLock) { try { SpaceUtil.wipe(sp, ready); channel.disconnect(); } catch (Exception e) { getLog().warn("disconnect", e); } } }
ChannelAdaptor extends QBeanSupport implements ChannelAdaptorMBean, Channel, Loggeable, ExceptionHandlerConfigAware { protected void disconnect () { synchronized (disconnectLock) { try { SpaceUtil.wipe(sp, ready); channel.disconnect(); } catch (Exception e) { getLog().warn("disconnect", e); } } } }
ChannelAdaptor extends QBeanSupport implements ChannelAdaptorMBean, Channel, Loggeable, ExceptionHandlerConfigAware { protected void disconnect () { synchronized (disconnectLock) { try { SpaceUtil.wipe(sp, ready); channel.disconnect(); } catch (Exception e) { getLog().warn("disconnect", e); } } } ChannelAdaptor(); }
ChannelAdaptor extends QBeanSupport implements ChannelAdaptorMBean, Channel, Loggeable, ExceptionHandlerConfigAware { protected void disconnect () { synchronized (disconnectLock) { try { SpaceUtil.wipe(sp, ready); channel.disconnect(); } catch (Exception e) { getLog().warn("disconnect", e); } } } ChannelAdaptor(); void initService(); void startService(); void stopService(); void destroyService(); synchronized void setReconnectDelay(long delay); long getReconnectDelay(); synchronized void setInQueue(String in); String getInQueue(); synchronized void setOutQueue(String out); void send(ISOMsg m); void send(ISOMsg m, long timeout); ISOMsg receive(); ISOMsg receive(long timeout); boolean isConnected(); String getOutQueue(); ISOChannel newChannel(Element e, QFactory f); synchronized void setHost(String host); String getHost(); synchronized void setPort(int port); int getPort(); synchronized void setSocketFactory(String sFac); void resetCounters(); String getCountersAsString(); int getTXCounter(); int getRXCounter(); int getConnectsCounter(); long getLastTxnTimestampInMillis(); long getIdleTimeInMillis(); String getSocketFactory(); void dump(PrintStream p, String indent); }
ChannelAdaptor extends QBeanSupport implements ChannelAdaptorMBean, Channel, Loggeable, ExceptionHandlerConfigAware { protected void disconnect () { synchronized (disconnectLock) { try { SpaceUtil.wipe(sp, ready); channel.disconnect(); } catch (Exception e) { getLog().warn("disconnect", e); } } } ChannelAdaptor(); void initService(); void startService(); void stopService(); void destroyService(); synchronized void setReconnectDelay(long delay); long getReconnectDelay(); synchronized void setInQueue(String in); String getInQueue(); synchronized void setOutQueue(String out); void send(ISOMsg m); void send(ISOMsg m, long timeout); ISOMsg receive(); ISOMsg receive(long timeout); boolean isConnected(); String getOutQueue(); ISOChannel newChannel(Element e, QFactory f); synchronized void setHost(String host); String getHost(); synchronized void setPort(int port); int getPort(); synchronized void setSocketFactory(String sFac); void resetCounters(); String getCountersAsString(); int getTXCounter(); int getRXCounter(); int getConnectsCounter(); long getLastTxnTimestampInMillis(); long getIdleTimeInMillis(); String getSocketFactory(); void dump(PrintStream p, String indent);  }