This is an automated email from the ASF dual-hosted git repository.
stoty pushed a commit to branch 5.1
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/5.1 by this push:
new 646d63b2b0 PHOENIX-7176 QueryTimeoutIT#testQueryTimeout fails with
incorrect error message
646d63b2b0 is described below
commit 646d63b2b098bf9185e49e55941b79028518f09c
Author: Aron Meszaros
AuthorDate: Wed Jan 10 10:29:44 2024 +0100
PHOENIX-7176 QueryTimeoutIT#testQueryTimeout fails with incorrect error
message
---
.../org/apache/phoenix/end2end/QueryTimeoutIT.java | 35 --
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
index 27bc211db5..4103655e16 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
@@ -23,15 +23,19 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
-import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLTimeoutException;
import java.util.Map;
import java.util.Properties;
+import org.apache.hadoop.hbase.coprocessor.ObserverContext;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver;
+import org.apache.hadoop.hbase.regionserver.InternalScanner;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixStatement;
@@ -42,6 +46,7 @@ import org.apache.phoenix.query.QueryServicesOptions;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -107,30 +112,19 @@ public class QueryTimeoutIT extends BaseTest {
@Test
public void testQueryTimeout() throws Exception {
-int nRows = 6;
Connection conn;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute(
"CREATE TABLE " + tableName + "(k BIGINT PRIMARY KEY, v
VARCHAR)");
-PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " +
tableName + " VALUES(?, '')");
-for (int i = 1; i <= nRows; i++) {
-stmt.setLong(1, i);
-stmt.executeUpdate();
-if ((i % 2000) == 0) {
-conn.commit();
-}
-}
-conn.commit();
-conn.createStatement().execute("UPDATE STATISTICS " + tableName);
-
+TestUtil.addCoprocessor(conn, tableName,
QueryTimeoutIT.SleepingRegionObserver.class);
+
PhoenixStatement pstmt =
conn.createStatement().unwrap(PhoenixStatement.class);
pstmt.setQueryTimeout(1);
long startTime = System.currentTimeMillis();
try {
ResultSet rs = pstmt.executeQuery("SELECT count(*) FROM " +
tableName);
-// Force lots of chunks so query is cancelled
-assertTrue(pstmt.getQueryPlan().getSplits().size() > 1000);
+startTime = System.currentTimeMillis();
rs.next();
fail("Total time of query was " + (System.currentTimeMillis() -
startTime) + " ms, but expected to be greater than 1000");
} catch (SQLTimeoutException e) {
@@ -140,4 +134,15 @@ public class QueryTimeoutIT extends BaseTest {
}
conn.close();
}
+
+public static class SleepingRegionObserver extends SimpleRegionObserver {
+@Override
+public void
preScannerClose(ObserverContext c,
InternalScanner s)
+throws IOException {
+try {
+Thread.sleep(1200); // Wait long enough
+} catch (InterruptedException e) {
+}
+}
+}
}