From 36a53509a2f0c1d6886b4e30b80c4d96067daee3 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Mon, 24 Sep 2007 19:13:20 +0000
Subject: [PATCH] Fixed a issue where executing an external process using the StaticUtils.exec method might never return. This will cause the server to dead lock when setting the file permissions using the UNIX chmod command. A particular case where this may happen is during log rotation on Java 5.
---
opendj-sdk/opends/src/server/org/opends/server/util/StaticUtils.java | 4 +++-
opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java | 4 +---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java b/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java
index 1bf847f..f1a0799 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java
@@ -32,7 +32,6 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.Method;
-import java.util.ArrayList;
import org.opends.server.core.DirectoryServer;
@@ -590,11 +589,10 @@
f.getAbsolutePath()
};
- ArrayList<String> outputLines = new ArrayList<String>(1);
int exitCode;
try
{
- exitCode = exec("chmod", arguments, null, null, outputLines);
+ exitCode = exec("chmod", arguments, null, null, null);
}
catch (Exception e)
{
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/StaticUtils.java b/opendj-sdk/opends/src/server/org/opends/server/util/StaticUtils.java
index 1ddfee9..6f771db 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/StaticUtils.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/StaticUtils.java
@@ -38,6 +38,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.nio.ByteBuffer;
import java.text.ParseException;
@@ -2388,13 +2389,14 @@
}
else
{
+ InputStream processStream = process.getInputStream();
BufferedReader reader =
new BufferedReader(new InputStreamReader(
process.getInputStream()));
try
{
- while (true)
+ while (processStream.available() > 0)
{
String line = reader.readLine();
if (line == null)
--
Gitblit v1.10.0