|
13 | 13 | */ |
14 | 14 | package com.facebook.presto.tests; |
15 | 15 |
|
| 16 | +import com.facebook.airlift.log.Logger; |
16 | 17 | import com.facebook.presto.Session; |
| 18 | +import com.facebook.presto.common.ErrorCode; |
17 | 19 | import com.facebook.presto.execution.TaskManager; |
18 | 20 | import com.facebook.presto.server.BasicQueryInfo; |
19 | 21 | import com.facebook.presto.server.testing.TestingPrestoServer; |
20 | 22 | import com.facebook.presto.tpch.TpchPlugin; |
21 | 23 | import com.facebook.presto.transaction.TransactionInfo; |
| 24 | +import com.google.common.base.Joiner; |
22 | 25 | import com.google.common.collect.ImmutableMap; |
23 | 26 | import com.google.common.util.concurrent.ListenableFuture; |
24 | 27 | import com.google.common.util.concurrent.ListeningExecutorService; |
|
30 | 33 | import java.util.ArrayList; |
31 | 34 | import java.util.List; |
32 | 35 | import java.util.Map; |
| 36 | +import java.util.Optional; |
33 | 37 |
|
34 | 38 | import static com.facebook.airlift.testing.Assertions.assertLessThanOrEqual; |
35 | 39 | import static com.facebook.presto.execution.QueryState.FINISHED; |
36 | 40 | import static com.facebook.presto.testing.TestingSession.testSessionBuilder; |
| 41 | +import static java.lang.String.format; |
37 | 42 | import static java.util.concurrent.Executors.newCachedThreadPool; |
38 | 43 | import static java.util.concurrent.TimeUnit.MILLISECONDS; |
39 | 44 | import static org.testng.Assert.assertEquals; |
|
42 | 47 | @Test(singleThreaded = true) |
43 | 48 | public class TestBrutalShutdown |
44 | 49 | { |
| 50 | + private static final Logger LOG = Logger.get(TestBrutalShutdown.class); |
45 | 51 | private static final long SHUTDOWN_TIMEOUT_MILLIS = 600_000; |
46 | 52 | private static final Session TINY_SESSION = testSessionBuilder() |
47 | 53 | .setCatalog("tpch") |
@@ -80,6 +86,13 @@ public void testQueryRetryOnShutdown() |
80 | 86 | totalSuccessfulQueries++; |
81 | 87 | } |
82 | 88 | } |
| 89 | + if (totalQueries != totalSuccessfulQueries) { |
| 90 | + LOG.error(Joiner.on("\n").join(queryInfos.stream() |
| 91 | + .filter(queryInfo -> queryInfo.getState() != FINISHED) |
| 92 | + .map(queryInfo -> format("query %s should have been successful but is in state: %s. Error: %s, retriable: %s", |
| 93 | + queryInfo.getQueryId(), queryInfo.getState(), queryInfo.getErrorCode(), Optional.ofNullable(queryInfo.getErrorCode()).map(ErrorCode::isRetriable).orElse(null))) |
| 94 | + .iterator())); |
| 95 | + } |
83 | 96 | assertEquals(totalSuccessfulQueries, totalQueries); |
84 | 97 | } |
85 | 98 | } |
|
0 commit comments