diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 692173e..44f938e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -429,11 +429,15 @@ public static String getHiveJobID(Configuration job) { public static String serializeExpression(ExprNodeDesc expr) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); - XMLEncoder encoder = new XMLEncoder(baos); - try { - encoder.writeObject(expr); - } finally { - encoder.close(); + //synchronize access to XMLEncoder See HIVE-4574 + //TODO: do this only if (open) jdk 1.7 (with this bug) is in use + synchronized(XMLEncoder.class){ + XMLEncoder encoder = new XMLEncoder(baos); + try { + encoder.writeObject(expr); + } finally { + encoder.close(); + } } try { return baos.toString("UTF-8");