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";