Adam Roberts created SPARK-17564:

             Summary: Flaky RequestTimeoutIntegrationSuite, furtherRequestsDelay
                 Key: SPARK-17564
             Project: Spark
          Issue Type: Improvement
    Affects Versions: 2.0.1, 2.1.0
            Reporter: Adam Roberts
            Priority: Minor

Could be related to [SPARK-10680]

This is the test and one fix would be to increase the timeouts from 1.2 seconds 
to 5 seconds

// The timeout is relative to the LAST request sent, which is kinda weird, but 
  // This test also makes sure the timeout works for Fetch requests as well as 
  public void furtherRequestsDelay() throws Exception {
    final byte[] response = new byte[16];
    final StreamManager manager = new StreamManager() {
      public ManagedBuffer getChunk(long streamId, int chunkIndex) {
        Uninterruptibles.sleepUninterruptibly(FOREVER, TimeUnit.MILLISECONDS);
        return new NioManagedBuffer(ByteBuffer.wrap(response));
    RpcHandler handler = new RpcHandler() {
      public void receive(
          TransportClient client,
          ByteBuffer message,
          RpcResponseCallback callback) {
        throw new UnsupportedOperationException();

      public StreamManager getStreamManager() {
        return manager;

    TransportContext context = new TransportContext(conf, handler);
    server = context.createServer();
    clientFactory = context.createClientFactory();
    TransportClient client = 
clientFactory.createClient(TestUtils.getLocalHost(), server.getPort());

    // Send one request, which will eventually fail.
    TestCallback callback0 = new TestCallback();
    client.fetchChunk(0, 0, callback0);
    Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS);
    // This would be one timeout to increase

    // Send a second request before the first has failed.
    TestCallback callback1 = new TestCallback();
    client.fetchChunk(0, 1, callback1);
    Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS);
    // This would be another timeout to increase

    synchronized (callback0) {
      // not complete yet, but should complete soon
      assertEquals(-1, callback0.successLength);
      callback0.wait(2 * 1000);
      assertTrue(callback0.failure instanceof IOException);

    synchronized (callback1) {
      // failed at same time as previous
      assert (callback0.failure instanceof IOException);

If there are better suggestions for improving this test let's take them 
onboard, I'll create a pull request using 5 sec timeout periods as a place to 
start so folks don't need to needlessly triage this failure

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to