You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2020/07/08 13:56:01 UTC
[hive] branch master updated: HIVE-23790: The error message length
of 2000 is exceeded for scheduled query (Zoltan Haindrich reviewed by Jesus
Camacho Rodriguez)
This is an automated email from the ASF dual-hosted git repository.
kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 661c792 HIVE-23790: The error message length of 2000 is exceeded for scheduled query (Zoltan Haindrich reviewed by Jesus Camacho Rodriguez)
661c792 is described below
commit 661c792c77196070656229b1571dc23a17c85ec2
Author: Zoltan Haindrich <ki...@rxd.hu>
AuthorDate: Wed Jul 8 15:55:49 2020 +0200
HIVE-23790: The error message length of 2000 is exceeded for scheduled query (Zoltan Haindrich reviewed by Jesus Camacho Rodriguez)
---
.../org/apache/hadoop/hive/metastore/ObjectStore.java | 15 ++++++++++++++-
.../metastore/client/TestMetastoreScheduledQueries.java | 14 ++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index c472e93..57a5f02 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -13061,7 +13061,7 @@ public class ObjectStore implements RawStore, Configurable {
execution.setExecutorQueryId(info.getExecutorQueryId());
}
if (info.isSetErrorMessage()) {
- execution.setErrorMessage(info.getErrorMessage());
+ execution.setErrorMessage(abbreviateErrorMessage(info.getErrorMessage(), 1000));
}
switch (info.getState()) {
@@ -13088,6 +13088,19 @@ public class ObjectStore implements RawStore, Configurable {
}
}
+ /**
+ * Abbreviates the error message to the given size.
+ *
+ * There might be error messages which may also contain a stack trace.
+ */
+ private String abbreviateErrorMessage(String errorMessage, int maxLength) {
+ if (errorMessage.length() < maxLength) {
+ return errorMessage;
+ }
+ String[] parts = errorMessage.split("\n", 2);
+ return StringUtils.abbreviate(parts[0], maxLength);
+ }
+
@Override
public void addReplicationMetrics(ReplicationMetricList replicationMetricList) {
boolean commited = false;
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestMetastoreScheduledQueries.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestMetastoreScheduledQueries.java
index d84cc04..0852e98 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestMetastoreScheduledQueries.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestMetastoreScheduledQueries.java
@@ -339,6 +339,7 @@ public class TestMetastoreScheduledQueries extends MetaStoreClientTest {
info = new ScheduledQueryProgressInfo(
pollResult.getExecutionId(), QueryState.FAILED, "executor-query-id");
+ info.setErrorMessage(generateLongErrorMessage());
// info.set
client.scheduledQueryProgress(info);
@@ -349,6 +350,8 @@ public class TestMetastoreScheduledQueries extends MetaStoreClientTest {
assertNull(q.getLastUpdateTime());
assertTrue(q.getEndTime() <= getEpochSeconds());
assertTrue(q.getEndTime() >= getEpochSeconds() - 1);
+ assertTrue(q.getErrorMessage().length() < 2000);
+ assertFalse(q.getErrorMessage().contains("x"));
}
// clustername is taken into account; this should be empty
@@ -357,6 +360,17 @@ public class TestMetastoreScheduledQueries extends MetaStoreClientTest {
assertFalse(pollResult.isSetQuery());
}
+ private String generateLongErrorMessage() {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < 2500; i++) {
+ sb.append("e");
+ }
+ for (int j = 0; j < 10; j++) {
+ sb.append("\nx");
+ }
+ return sb.toString();
+ }
+
@Test
public void testCleanup() throws Exception {
String namespace = "cleanup";