Author: jbellis
Date: Wed Aug 17 05:52:45 2011
New Revision: 1158528

URL: http://svn.apache.org/viewvc?rev=1158528&view=rev
Log:
merge from 0.8

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/contrib/   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
    cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
    cassandra/trunk/src/java/org/apache/cassandra/service/GCInspector.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
 /cassandra/branches/cassandra-0.7:1026516-1151306
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1158501
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Aug 17 05:52:45 2011
@@ -45,6 +45,10 @@
    in a commitlog segment (CASSANDRA-3021)
  * fix cassandra.bat when CASSANDRA_HOME contains spaces (CASSANDRA-2952)
  * fix to SSTableSimpleUnsortedWriter bufferSize calculation (CASSANDRA-3027)
+ * make cleanup and normal compaction able to skip empty rows
+   (rows containing nothing but expired tombstones) (CASSANDRA-3039)
+ * work around native memory leak in com.sun.management.GarbageCollectorMXBean
+   (CASSANDRA-2868)
 
 
 0.8.4

Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
 /cassandra/branches/cassandra-0.7/contrib:1026516-1151306
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1158501
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1151306
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1158501
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1151306
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1158501
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1151306
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1158501
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1151306
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1158501
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 05:52:45 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1151306
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1157377
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1158501
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689

Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g Wed Aug 17 05:52:45 
2011
@@ -207,7 +207,6 @@ whereClause returns [WhereClause clause]
 insertStatement returns [UpdateStatement expr]
     : {
           Attributes attrs = new Attributes();
-          Map<Term, Term> columns = new HashMap<Term, Term>();
 
           List<Term> columnNames  = new ArrayList<Term>();
           List<Term> columnValues = new ArrayList<Term>();

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
Wed Aug 17 05:52:45 2011
@@ -199,6 +199,7 @@ public class CommitLog implements Commit
         }
         final ReplayPosition globalPosition = 
Ordering.from(ReplayPosition.comparator).min(cfPositions.values());
 
+        Checksum checksum = new CRC32();
         for (final File file : clogs)
         {
             final long segment = 
CommitLogSegment.idFromFilename(file.getName());
@@ -237,7 +238,6 @@ public class CommitLog implements Commit
                         logger.debug("Reading mutation at " + 
reader.getFilePointer());
 
                     long claimedCRC32;
-                    Checksum checksum = new CRC32();
                     int serializedSize;
                     try
                     {
@@ -250,6 +250,7 @@ public class CommitLog implements Commit
                         if (serializedSize < 10)
                             break;
                         long claimedSizeChecksum = reader.readLong();
+                        checksum.reset();
                         checksum.update(serializedSize);
                         if (checksum.getValue() != claimedSizeChecksum)
                             break; // entry wasn't synced correctly/fully.  
that's ok.

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
 Wed Aug 17 05:52:45 2011
@@ -700,8 +700,11 @@ public class CompactionManager implement
                     SSTableIdentityIterator row = (SSTableIdentityIterator) 
scanner.next();
                     if (Range.isTokenInRanges(row.getKey().token, ranges))
                     {
+                        AbstractCompactedRow compactedRow = 
controller.getCompactedRow(row);
+                        if (compactedRow.isEmpty())
+                            continue;
                         writer = maybeCreateWriter(cfs, 
compactionFileLocation, expectedBloomFilterSize, writer, 
Collections.singletonList(sstable));
-                        writer.append(controller.getCompactedRow(row));
+                        writer.append(compactedRow);
                         totalkeysWritten++;
                     }
                     else

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionTask.java?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionTask.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionTask.java 
Wed Aug 17 05:52:45 2011
@@ -152,6 +152,9 @@ public class CompactionTask extends Abst
             while (nni.hasNext())
             {
                 AbstractCompactedRow row = nni.next();
+                if (row.isEmpty())
+                    continue;
+                
                 long position = writer.append(row);
                 totalkeysWritten++;
 

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/GCInspector.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/GCInspector.java?rev=1158528&r1=1158527&r2=1158528&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/GCInspector.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/GCInspector.java Wed 
Aug 17 05:52:45 2011
@@ -20,11 +20,13 @@ package org.apache.cassandra.service;
  * 
  */
 
+import java.lang.management.GarbageCollectorMXBean;
 import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
 import java.lang.management.MemoryUsage;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -46,32 +48,22 @@ public class GCInspector
     public static final GCInspector instance = new GCInspector();
 
     private HashMap<String, Long> gctimes = new HashMap<String, Long>();
+    private HashMap<String, Long> gccounts = new HashMap<String, Long>();
+
+    List<GarbageCollectorMXBean> beans = new 
ArrayList<GarbageCollectorMXBean>();
+    MemoryMXBean membean = ManagementFactory.getMemoryMXBean();
 
-    List<Object> beans = new ArrayList<Object>(); // these are instances of 
com.sun.management.GarbageCollectorMXBean
     private volatile boolean cacheSizesReduced;
 
     public GCInspector()
     {
-        // we only want this class to do its thing on sun jdks, or when the 
sun classes are present.
-        Class gcBeanClass = null;
-        try
-        {
-            gcBeanClass = 
Class.forName("com.sun.management.GarbageCollectorMXBean");
-            Class.forName("com.sun.management.GcInfo");
-        }
-        catch (ClassNotFoundException ex)
-        {
-            // this happens when using a non-sun jdk.
-            logger.warn("Cannot load sun GC monitoring classes. GCInspector is 
disabled.");
-        }
-        
         MBeanServer server = ManagementFactory.getPlatformMBeanServer();
         try
         {
             ObjectName gcName = new 
ObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE + ",*");
             for (ObjectName name : server.queryNames(gcName, null))
             {
-                Object gc = ManagementFactory.newPlatformMXBeanProxy(server, 
name.getCanonicalName(), gcBeanClass);
+                GarbageCollectorMXBean gc = 
ManagementFactory.newPlatformMXBeanProxy(server, name.getCanonicalName(), 
GarbageCollectorMXBean.class);
                 beans.add(gc);
             }
         }
@@ -98,43 +90,42 @@ public class GCInspector
 
     private void logGCResults()
     {
-        for (Object gc : beans)
+        for (GarbageCollectorMXBean gc : beans)
         {
-            SunGcWrapper gcw = new SunGcWrapper(gc);
-            if (gcw.isLastGcInfoNull())
+            Long previousTotal = gctimes.get(gc.getName());
+            Long total = gc.getCollectionTime();
+            if (previousTotal == null)
+                previousTotal = 0L;
+            if (previousTotal.equals(total))
                 continue;
-
-            Long previous = gctimes.get(gcw.getName());
-            if (previous != null && previous.longValue() == 
gcw.getCollectionTime().longValue())
-                continue;
-            gctimes.put(gcw.getName(), gcw.getCollectionTime());
-
-            long previousMemoryUsed = 0;
-            long memoryUsed = 0;
-            long memoryMax = 0;
-            for (Map.Entry<String, MemoryUsage> entry : 
gcw.getMemoryUsageBeforeGc().entrySet())
-            {
-                previousMemoryUsed += entry.getValue().getUsed();
-            }
-            for (Map.Entry<String, MemoryUsage> entry : 
gcw.getMemoryUsageAfterGc().entrySet())
-            {
-                MemoryUsage mu = entry.getValue();
-                memoryUsed += mu.getUsed();
-                memoryMax += mu.getMax();
-            }
-
-            String st = String.format("GC for %s: %s ms, %s reclaimed leaving 
%s used; max is %s",
-                                      gcw.getName(), gcw.getDuration(), 
previousMemoryUsed - memoryUsed, memoryUsed, memoryMax);
-            if (gcw.getDuration() > MIN_DURATION)
+            gctimes.put(gc.getName(), total);
+            Long duration = total - previousTotal;
+            assert duration > 0;
+
+            Long previousCount = gccounts.get(gc.getName());
+            Long count = gc.getCollectionCount();
+            if (previousCount == null)
+                previousCount = 0L;
+            gccounts.put(gc.getName(), count);
+            assert count > previousCount;
+
+            MemoryUsage mu = membean.getHeapMemoryUsage();
+            long memoryUsed = mu.getUsed();
+            long memoryMax = mu.getMax();
+
+            String st = String.format("GC for %s: %s ms for %s collections, %s 
used; max is %s",
+                                      gc.getName(), duration, count - 
previousCount, memoryUsed, memoryMax);
+            long durationPerCollection = duration / (count - previousCount);
+            if (durationPerCollection > MIN_DURATION)
                 logger.info(st);
             else if (logger.isDebugEnabled())
                 logger.debug(st);
 
-            if (gcw.getDuration() > MIN_DURATION_TPSTATS)
+            if (durationPerCollection > MIN_DURATION_TPSTATS)
                 StatusLogger.log();
 
             // if we just finished a full collection and we're still using a 
lot of memory, try to reduce the pressure
-            if (gcw.getName().equals("ConcurrentMarkSweep"))
+            if (gc.getName().equals("ConcurrentMarkSweep"))
             {
                 SSTableDeletingTask.rescheduleFailedTasks();
 
@@ -155,82 +146,4 @@ public class GCInspector
             }
         }
     }
-
-    // wrapper for sun class. this enables other jdks to compile this class.
-    private static final class SunGcWrapper
-    {
-        
-        private Map<String, MemoryUsage> usageBeforeGc = null;
-        private Map<String, MemoryUsage> usageAfterGc = null;
-        private String name;
-        private Long collectionTime;
-        private Long duration;
-        
-        SunGcWrapper(Object gcMxBean)
-        {
-            // if we've gotten this far, we've already verified that the right 
classes are in the CP. Now we just
-            // need to check for boneheadedness.
-            // grab everything we need here so that we don't have to deal with 
try/catch everywhere.
-            try
-            {
-                assert 
Class.forName("com.sun.management.GarbageCollectorMXBean").isAssignableFrom(gcMxBean.getClass());
-                Method getGcInfo = 
gcMxBean.getClass().getDeclaredMethod("getLastGcInfo");
-                Object lastGcInfo = getGcInfo.invoke(gcMxBean);
-                if (lastGcInfo != null)
-                {
-                    usageBeforeGc = (Map<String, 
MemoryUsage>)lastGcInfo.getClass().getDeclaredMethod("getMemoryUsageBeforeGc").invoke(lastGcInfo);
-                    usageAfterGc = (Map<String, 
MemoryUsage>)lastGcInfo.getClass().getDeclaredMethod("getMemoryUsageAfterGc").invoke(lastGcInfo);
-                    duration = 
(Long)lastGcInfo.getClass().getDeclaredMethod("getDuration").invoke(lastGcInfo);
-                    name = 
(String)gcMxBean.getClass().getDeclaredMethod("getName").invoke(gcMxBean);
-                    collectionTime = 
(Long)gcMxBean.getClass().getDeclaredMethod("getCollectionTime").invoke(gcMxBean);
-                }
-            }
-            catch (ClassNotFoundException e)
-            {
-                throw new RuntimeException(e);
-            }
-            catch (NoSuchMethodException e)
-            {
-                throw new RuntimeException(e);
-            }
-            catch (IllegalAccessException e)
-            {
-                throw new RuntimeException(e);
-            }
-            catch (InvocationTargetException e)
-            {
-                throw new RuntimeException(e);
-            }
-        }
-        
-        String getName()
-        {
-            return name;
-        }
-        
-        Long getCollectionTime()
-        {
-            return collectionTime;
-        }
-        
-        Long getDuration()
-        {
-            return duration;
-        }
-        
-        Map<String, MemoryUsage> getMemoryUsageAfterGc()
-        {
-            return usageAfterGc;
-        }
-        
-        Map<String, MemoryUsage> getMemoryUsageBeforeGc()
-        {
-            return usageBeforeGc;
-        }
-        
-        boolean isLastGcInfoNull()
-        {
-            return usageBeforeGc == null;
-        }
-    }
 }


Reply via email to