Author: dejanb
Date: Tue Nov 17 13:16:05 2009
New Revision: 881267
URL: http://svn.apache.org/viewvc?rev=881267&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQ-2499 - don't show passwords in
log files
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/DataFileAppender.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/NIODataFileAppender.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
activemq/trunk/activemq-core/src/test/resources/log4j.properties
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/DataFileAppender.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/DataFileAppender.java?rev=881267&r1=881266&r2=881267&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/DataFileAppender.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/DataFileAppender.java
Tue Nov 17 13:16:05 2009
@@ -21,6 +21,7 @@
import java.io.RandomAccessFile;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
import org.apache.activemq.util.ByteSequence;
import org.apache.activemq.util.DataByteArrayOutputStream;
@@ -48,7 +49,7 @@
protected final CountDownLatch shutdownDone = new CountDownLatch(1);
protected int maxWriteBatchSize = DEFAULT_MAX_BATCH_SIZE;
- private boolean running;
+ protected boolean running;
private Thread thread;
public static class WriteKey {
@@ -82,6 +83,7 @@
public final WriteCommand first;
public final CountDownLatch latch = new CountDownLatch(1);
public int size;
+ public AtomicReference<IOException> exception = new
AtomicReference<IOException>();
public WriteBatch(DataFile dataFile, WriteCommand write) throws
IOException {
this.dataFile = dataFile;
@@ -179,6 +181,10 @@
} catch (InterruptedException e) {
throw new InterruptedIOException();
}
+ IOException exception = batch.exception.get();
+ if (exception != null) {
+ throw exception;
+ }
}
return location;
@@ -216,10 +222,7 @@
if (shutdown) {
throw new IOException("Async Writter Thread Shutdown");
}
- if (firstAsyncException != null) {
- throw firstAsyncException;
- }
-
+
if (!running) {
running = true;
thread = new Thread() {
@@ -231,6 +234,11 @@
thread.setDaemon(true);
thread.setName("ActiveMQ Data File Writer");
thread.start();
+ firstAsyncException = null;
+ }
+
+ if (firstAsyncException != null) {
+ throw firstAsyncException;
}
if (nextWriteBatch == null) {
@@ -298,6 +306,7 @@
protected void processQueue() {
DataFile dataFile = null;
RandomAccessFile file = null;
+ WriteBatch wb = null;
try {
DataByteArrayOutputStream buff = new
DataByteArrayOutputStream(maxWriteBatchSize);
@@ -321,7 +330,7 @@
enqueueMutex.notify();
}
- WriteBatch wb = (WriteBatch)o;
+ wb = (WriteBatch)o;
if (dataFile != wb.dataFile) {
if (file != null) {
dataFile.closeRandomAccessFile(file);
@@ -406,6 +415,14 @@
} catch (IOException e) {
synchronized (enqueueMutex) {
firstAsyncException = e;
+ if (wb != null) {
+ wb.latch.countDown();
+ wb.exception.set(e);
+ }
+ if (nextWriteBatch != null) {
+ nextWriteBatch.latch.countDown();
+ nextWriteBatch.exception.set(e);
+ }
}
} catch (InterruptedException e) {
} finally {
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/NIODataFileAppender.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/NIODataFileAppender.java?rev=881267&r1=881266&r2=881267&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/NIODataFileAppender.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/NIODataFileAppender.java
Tue Nov 17 13:16:05 2009
@@ -47,6 +47,7 @@
DataFile dataFile = null;
RandomAccessFile file = null;
FileChannel channel = null;
+ WriteBatch wb = null;
try {
@@ -81,13 +82,14 @@
enqueueMutex.notify();
}
- WriteBatch wb = (WriteBatch)o;
+ wb = (WriteBatch)o;
if (dataFile != wb.dataFile) {
if (file != null) {
dataFile.closeRandomAccessFile(file);
}
dataFile = wb.dataFile;
file = dataFile.openRandomAccessFile(true);
+ System.out.println("new channel?");
channel = file.getChannel();
}
@@ -180,16 +182,33 @@
} catch (IOException e) {
synchronized (enqueueMutex) {
firstAsyncException = e;
+ if (wb != null) {
+ wb.latch.countDown();
+ wb.exception.set(e);
+ }
+ if (nextWriteBatch != null) {
+ nextWriteBatch.latch.countDown();
+ nextWriteBatch.exception.set(e);
+ }
}
} catch (InterruptedException e) {
} finally {
try {
if (file != null) {
dataFile.closeRandomAccessFile(file);
+ dataFile = null;
+ file.close();
+ file = null;
+ }
+ if (channel != null) {
+ System.out.println("Closing channel");
+ channel.close();
+ channel = null;
}
} catch (IOException e) {
}
shutdownDone.countDown();
+ running = false;
}
}
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/IntrospectionSupport.java?rev=881267&r1=881266&r2=881267&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
Tue Nov 17 13:16:05 2009
@@ -262,23 +262,28 @@
boolean first = true;
for (Iterator iter = entrySet.iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry)iter.next();
+ Object value = entry.getValue();
+ Object key = entry.getKey();
if (first) {
first = false;
} else {
buffer.append(", ");
}
- buffer.append(entry.getKey());
+ buffer.append(key);
buffer.append(" = ");
- appendToString(buffer, entry.getValue());
+
+ appendToString(buffer, key, value);
}
buffer.append("}");
return buffer.toString();
}
- protected static void appendToString(StringBuffer buffer, Object value) {
+ protected static void appendToString(StringBuffer buffer, Object key,
Object value) {
if (value instanceof ActiveMQDestination) {
ActiveMQDestination destination = (ActiveMQDestination)value;
buffer.append(destination.getQualifiedName());
+ } else if (key.toString().contains("password")){
+ buffer.append("*****");
} else {
buffer.append(value);
}
Modified: activemq/trunk/activemq-core/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/resources/log4j.properties?rev=881267&r1=881266&r2=881267&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/resources/log4j.properties (original)
+++ activemq/trunk/activemq-core/src/test/resources/log4j.properties Tue Nov 17
13:16:05 2009
@@ -18,7 +18,7 @@
#
# The logging properties used during tests..
#
-log4j.rootLogger=INFO, out, stdout
+log4j.rootLogger=DEBUG, out, stdout
#log4j.logger.org.apache.activemq=DEBUG