Details
diff --git a/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java b/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
index e7fff84..4bc8e68 100644
--- a/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
+++ b/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
@@ -22,6 +22,7 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -1190,7 +1191,7 @@ public class JdbcExecutorLoader extends AbstractJdbcLoader implements
FileIOUtils.getUtf8Range(buffer, 0, buffer.length);
return new LogData(startByte + result.getFirst(), result.getSecond(),
- new String(buffer, result.getFirst(), result.getSecond()));
+ new String(buffer, result.getFirst(), result.getSecond(), StandardCharsets.UTF_8));
}
}
diff --git a/azkaban-common/src/main/java/azkaban/jobExecutor/utils/process/AzkabanProcess.java b/azkaban-common/src/main/java/azkaban/jobExecutor/utils/process/AzkabanProcess.java
index 9a88204..5683d9f 100644
--- a/azkaban-common/src/main/java/azkaban/jobExecutor/utils/process/AzkabanProcess.java
+++ b/azkaban-common/src/main/java/azkaban/jobExecutor/utils/process/AzkabanProcess.java
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
@@ -98,10 +99,12 @@ public class AzkabanProcess {
this.startupLatch.countDown();
final LogGobbler outputGobbler =
- new LogGobbler(new InputStreamReader(this.process.getInputStream()),
+ new LogGobbler(
+ new InputStreamReader(this.process.getInputStream(), StandardCharsets.UTF_8),
this.logger, Level.INFO, 30);
final LogGobbler errorGobbler =
- new LogGobbler(new InputStreamReader(this.process.getErrorStream()),
+ new LogGobbler(
+ new InputStreamReader(this.process.getErrorStream(), StandardCharsets.UTF_8),
this.logger, Level.ERROR, 30);
outputGobbler.start();
diff --git a/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java b/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
index dafc738..21adef5 100644
--- a/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
+++ b/azkaban-common/src/main/java/azkaban/storage/LocalStorage.java
@@ -29,6 +29,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
@@ -79,7 +80,7 @@ public class LocalStorage implements Storage {
final File targetFile = new File(projectDir, String.format("%s-%s.zip",
String.valueOf(metadata.getProjectId()),
- new String(metadata.getHash())));
+ new String(metadata.getHash(), StandardCharsets.UTF_8)));
if (targetFile.exists()) {
log.info(String.format("Duplicate found: meta: %s, targetFile: %s, ", metadata,
diff --git a/azkaban-common/src/main/java/azkaban/storage/StorageManager.java b/azkaban-common/src/main/java/azkaban/storage/StorageManager.java
index f8a6281..95cf142 100644
--- a/azkaban-common/src/main/java/azkaban/storage/StorageManager.java
+++ b/azkaban-common/src/main/java/azkaban/storage/StorageManager.java
@@ -35,6 +35,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
@@ -171,7 +172,9 @@ public class StorageManager {
final byte[] hash = Md5Hasher.md5Hash(file);
checkState(Arrays.equals(pfh.getMd5Hash(), hash),
String.format("MD5 HASH Failed. project ID: %d version: %d Expected: %s Actual: %s",
- pfh.getProjectId(), pfh.getVersion(), new String(pfh.getMd5Hash()), new String(hash))
+ pfh.getProjectId(), pfh.getVersion(),
+ new String(pfh.getMd5Hash(), StandardCharsets.UTF_8),
+ new String(hash, StandardCharsets.UTF_8))
);
}
diff --git a/azkaban-common/src/main/java/azkaban/utils/FileIOUtils.java b/azkaban-common/src/main/java/azkaban/utils/FileIOUtils.java
index c8ae211..8deb690 100644
--- a/azkaban-common/src/main/java/azkaban/utils/FileIOUtils.java
+++ b/azkaban-common/src/main/java/azkaban/utils/FileIOUtils.java
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -223,7 +224,7 @@ public class FileIOUtils {
}
final Pair<Integer, Integer> utf8Range = getUtf8Range(buffer, 0, read);
final String outputString =
- new String(buffer, utf8Range.getFirst(), utf8Range.getSecond());
+ new String(buffer, utf8Range.getFirst(), utf8Range.getSecond(), StandardCharsets.UTF_8);
return new LogData(fileOffset + utf8Range.getFirst(),
utf8Range.getSecond(), outputString);
@@ -254,7 +255,7 @@ public class FileIOUtils {
}
final Pair<Integer, Integer> utf8Range = getUtf8Range(buffer, 0, read);
final String outputString =
- new String(buffer, utf8Range.getFirst(), utf8Range.getSecond());
+ new String(buffer, utf8Range.getFirst(), utf8Range.getSecond(), StandardCharsets.UTF_8);
return new JobMetaData(fileOffset + utf8Range.getFirst(),
utf8Range.getSecond(), outputString);
@@ -360,7 +361,7 @@ public class FileIOUtils {
private final CircularBuffer<String> buffer = new CircularBuffer<>(5);
public NullLogger(final InputStream stream) {
- this.inputReader = new BufferedReader(new InputStreamReader(stream));
+ this.inputReader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8));
}
@Override
diff --git a/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java b/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
index e0ef0d1..5764b3a 100644
--- a/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
+++ b/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
@@ -19,14 +19,15 @@ package azkaban.executor;
import azkaban.jobExecutor.ProcessJob;
import azkaban.utils.Props;
import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -80,7 +81,7 @@ public class JavaJobRunnerMain {
this._logger.addAppender(appender);
final Properties prop = new Properties();
- prop.load(new BufferedReader(new FileReader(propsFile)));
+ prop.load(Files.newBufferedReader(Paths.get(propsFile), StandardCharsets.UTF_8));
this._logger.info("Running job " + this._jobName);
final String className = prop.getProperty(JOB_CLASS);
@@ -268,13 +269,13 @@ public class JavaJobRunnerMain {
// Manually serialize into JSON instead of adding org.json to
// external classpath. Reduces one dependency for something that's
// essentially easy.
- writer.write("{\n".getBytes());
+ writer.write("{\n".getBytes(StandardCharsets.UTF_8));
for (final Map.Entry<String, String> entry : properties.entrySet()) {
writer.write(String.format(" \"%s\":\"%s\",\n",
entry.getKey().replace("\"", "\\\\\""),
- entry.getValue().replace("\"", "\\\\\"")).getBytes());
+ entry.getValue().replace("\"", "\\\\\"")).getBytes(StandardCharsets.UTF_8));
}
- writer.write("}".getBytes());
+ writer.write("}".getBytes(StandardCharsets.UTF_8));
} catch (final Exception e) {
throw new RuntimeException("Unable to store output properties to: "
+ outputFileStr);
diff --git a/azkaban-common/src/test/java/azkaban/executor/SleepJavaJob.java b/azkaban-common/src/test/java/azkaban/executor/SleepJavaJob.java
index 15a4b00..4bb2b69 100644
--- a/azkaban-common/src/test/java/azkaban/executor/SleepJavaJob.java
+++ b/azkaban-common/src/test/java/azkaban/executor/SleepJavaJob.java
@@ -16,8 +16,9 @@
package azkaban.executor;
-import java.io.BufferedReader;
-import java.io.FileReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.Map;
import java.util.Properties;
@@ -42,7 +43,7 @@ public class SleepJavaJob {
public static void main(final String[] args) throws Exception {
final String propsFile = System.getenv("JOB_PROP_FILE");
final Properties prop = new Properties();
- prop.load(new BufferedReader(new FileReader(propsFile)));
+ prop.load(Files.newBufferedReader(Paths.get(propsFile), StandardCharsets.UTF_8));
final String jobName = System.getenv("JOB_NAME");
final SleepJavaJob job = new SleepJavaJob(jobName, prop);
diff --git a/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java b/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
index 4e52d6c..5b9d0ff 100644
--- a/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
+++ b/azkaban-common/src/test/java/azkaban/storage/LocalStorageTest.java
@@ -27,6 +27,7 @@ import azkaban.spi.StorageMetadata;
import azkaban.utils.Md5Hasher;
import java.io.File;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.junit.After;
@@ -72,7 +73,7 @@ public class LocalStorageTest {
.append(File.separator)
.append(metadata.getProjectId())
.append("-")
- .append(new String(metadata.getHash()))
+ .append(new String(metadata.getHash(), StandardCharsets.UTF_8))
.append(".zip")
.toString()
);