[Red5commits] [1054] make printing of stack traces thread-safe
jbauch
luke at codegent.com
Wed Jun 28 11:40:05 EDT 2006
make printing of stack traces thread-safe
Timestamp: 06/29/06 01:36:04 (less than one hour ago)
Change: 1054
Author: jbauch
Files (see diff or trac for details):
java/server/trunk/src/org/red5/server/DebugPooledByteBufferAllocator.java
Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1054
Index: /java/server/trunk/src/org/red5/server/DebugPooledByteBufferAllocator.java
===================================================================
--- /java/server/trunk/src/org/red5/server/DebugPooledByteBufferAllocator.java (revision 1035)
+++ /java/server/trunk/src/org/red5/server/DebugPooledByteBufferAllocator.java (revision 1054)
@@ -238,15 +238,19 @@
public void resetStacks() {
- stacks.clear();
+ synchronized (stacks) {
+ stacks.clear();
+ }
}
public void printStacks() {
- for (Entry<UnexpandableByteBuffer, StackTraceElement[]> entry: stacks.entrySet()) {
- System.out.println("Stack for buffer " + entry.getKey());
- StackTraceElement[] stack = entry.getValue();
- for (StackTraceElement element: stack) {
- System.out.println(" " + element);
- }
- System.out.println();
+ synchronized (stacks) {
+ for (Entry<UnexpandableByteBuffer, StackTraceElement[]> entry: stacks.entrySet()) {
+ System.out.println("Stack for buffer " + entry.getKey());
+ StackTraceElement[] stack = entry.getValue();
+ for (StackTraceElement element: stack) {
+ System.out.println(" " + element);
+ }
+ System.out.println();
+ }
}
}
@@ -277,5 +281,7 @@
log.info("+++ "+count+" ("+buf.buf().capacity()+") "+getCodeSection() +" req: "+capacity );
if (saveStacks)
- stacks.put(buf, Thread.currentThread().getStackTrace());
+ synchronized (stacks) {
+ stacks.put(buf, Thread.currentThread().getStackTrace());
+ }
return buf;
@@ -288,5 +294,7 @@
log.info("--- "+count+" ("+buf.buf().capacity()+") " +getCodeSection() );
if (saveStacks)
- stacks.remove(buf);
+ synchronized (stacks) {
+ stacks.remove(buf);
+ }
ExpiringStack[] bufferStacks = buf.buf().isDirect()? directBufferStacks : heapBufferStacks;
ExpiringStack stack = bufferStacks[ getBufferStackIndex( bufferStacks, buf.buf().capacity() ) ];
Note:
Diffs are chopped if more than 30k.
This is to get past the limit on the mailing list.
More information about the Red5commits
mailing list