public class org.apache.cassandra.db.SizeEstimatesRecorder extends org.apache.cassandra.service.MigrationListener implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.cassandra.db.SizeEstimatesRecorder
super_class: org.apache.cassandra.service.MigrationListener
{
private static final org.slf4j.Logger logger;
descriptor: Lorg/slf4j/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final org.apache.cassandra.db.SizeEstimatesRecorder instance;
descriptor: Lorg/apache/cassandra/db/SizeEstimatesRecorder;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lorg/apache/cassandra/db/SizeEstimatesRecorder;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic org.apache.cassandra.db.SizeEstimatesRecorder.logger:Lorg/slf4j/Logger;
1: new org.apache.cassandra.db.SizeEstimatesRecorder
dup
invokespecial org.apache.cassandra.db.SizeEstimatesRecorder.<init>:()V
putstatic org.apache.cassandra.db.SizeEstimatesRecorder.instance:Lorg/apache/cassandra/db/SizeEstimatesRecorder;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.apache.cassandra.service.MigrationListener.<init>:()V
1: getstatic org.apache.cassandra.service.MigrationManager.instance:Lorg/apache/cassandra/service/MigrationManager;
aload 0
invokevirtual org.apache.cassandra.service.MigrationManager.register:(Lorg/apache/cassandra/service/MigrationListener;)V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=11, args_size=1
start local 0 0: getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
invokevirtual org.apache.cassandra.service.StorageService.getTokenMetadata:()Lorg/apache/cassandra/locator/TokenMetadata;
invokevirtual org.apache.cassandra.locator.TokenMetadata.cloneOnlyTokenMap:()Lorg/apache/cassandra/locator/TokenMetadata;
astore 1
start local 1 1: aload 1
invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
invokevirtual org.apache.cassandra.locator.TokenMetadata.isMember:(Ljava/net/InetAddress;)Z
ifne 4
2: getstatic org.apache.cassandra.db.SizeEstimatesRecorder.logger:Lorg/slf4j/Logger;
ldc "Node is not part of the ring; not recording size estimates"
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
3: return
4: StackMap locals: org.apache.cassandra.locator.TokenMetadata
StackMap stack:
getstatic org.apache.cassandra.db.SizeEstimatesRecorder.logger:Lorg/slf4j/Logger;
ldc "Recording size estimates"
invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;)V
5: invokestatic org.apache.cassandra.db.Keyspace.nonLocalStrategy:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 3
goto 21
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.locator.TokenMetadata top java.util.Iterator
StackMap stack:
6: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.db.Keyspace
astore 2
start local 2 7: getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
aload 2
invokevirtual org.apache.cassandra.db.Keyspace.getName:()Ljava/lang/String;
8: invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
9: invokevirtual org.apache.cassandra.service.StorageService.getPrimaryRangesForEndpoint:(Ljava/lang/String;Ljava/net/InetAddress;)Ljava/util/Collection;
astore 4
start local 4 10: aload 2
invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStores:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 20
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.locator.TokenMetadata org.apache.cassandra.db.Keyspace java.util.Iterator java.util.Collection top java.util.Iterator
StackMap stack:
11: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.db.ColumnFamilyStore
astore 5
start local 5 12: invokestatic java.lang.System.nanoTime:()J
lstore 7
start local 7 13: aload 0
aload 5
aload 4
invokevirtual org.apache.cassandra.db.SizeEstimatesRecorder.recordSizeEstimates:(Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection;)V
14: invokestatic java.lang.System.nanoTime:()J
lload 7
lsub
lstore 9
start local 9 15: getstatic org.apache.cassandra.db.SizeEstimatesRecorder.logger:Lorg/slf4j/Logger;
ldc "Spent {} milliseconds on estimating {}.{} size"
iconst_3
anewarray java.lang.Object
dup
iconst_0
16: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 9
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
dup
iconst_1
17: aload 5
getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
getfield org.apache.cassandra.config.CFMetaData.ksName:Ljava/lang/String;
aastore
dup
iconst_2
18: aload 5
getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
getfield org.apache.cassandra.config.CFMetaData.cfName:Ljava/lang/String;
aastore
19: invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 9 end local 7 end local 5 20: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
end local 4 end local 2 21: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.locator.TokenMetadata top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
22: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
1 23 1 metadata Lorg/apache/cassandra/locator/TokenMetadata;
7 21 2 keyspace Lorg/apache/cassandra/db/Keyspace;
10 21 4 localRanges Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
12 20 5 table Lorg/apache/cassandra/db/ColumnFamilyStore;
13 20 7 start J
15 20 9 passed J
private void recordSizeEstimates(org.apache.cassandra.db.ColumnFamilyStore, java.util.Collection<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>>);
descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=18, args_size=3
start local 0 start local 1 start local 2 0: new java.util.HashMap
dup
aload 2
invokeinterface java.util.Collection.size:()I
invokespecial java.util.HashMap.<init>:(I)V
astore 3
start local 3 1: aload 2
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 5
goto 24
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.dht.Range
astore 4
start local 4 3: aload 4
invokevirtual org.apache.cassandra.dht.Range.unwrap:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 23
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map org.apache.cassandra.dht.Range java.util.Iterator top java.util.Iterator
StackMap stack:
4: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.dht.Range
astore 6
start local 6 5: aconst_null
astore 8
start local 8 6: goto 12
7: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.utils.concurrent.Refs
StackMap stack:
aload 1
invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getTracker:()Lorg/apache/cassandra/db/lifecycle/Tracker;
invokevirtual org.apache.cassandra.db.lifecycle.Tracker.getView:()Lorg/apache/cassandra/db/lifecycle/View;
getstatic org.apache.cassandra.db.lifecycle.SSTableSet.CANONICAL:Lorg/apache/cassandra/db/lifecycle/SSTableSet;
invokevirtual org.apache.cassandra.db.lifecycle.View.select:(Lorg/apache/cassandra/db/lifecycle/SSTableSet;)Ljava/lang/Iterable;
astore 13
start local 13 8: aload 13
invokestatic org.apache.cassandra.db.lifecycle.SSTableIntervalTree.build:(Ljava/lang/Iterable;)Lorg/apache/cassandra/db/lifecycle/SSTableIntervalTree;
astore 14
start local 14 9: aload 6
invokestatic org.apache.cassandra.dht.Range.makeRowRange:(Lorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/dht/Range;
astore 15
start local 15 10: aload 15
getfield org.apache.cassandra.dht.Range.left:Lorg/apache/cassandra/dht/RingPosition;
checkcast org.apache.cassandra.db.PartitionPosition
aload 15
getfield org.apache.cassandra.dht.Range.right:Lorg/apache/cassandra/dht/RingPosition;
checkcast org.apache.cassandra.db.PartitionPosition
aload 14
invokestatic org.apache.cassandra.db.lifecycle.View.sstablesInBounds:(Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/lifecycle/SSTableIntervalTree;)Ljava/util/List;
astore 16
start local 16 11: aload 16
invokestatic org.apache.cassandra.utils.concurrent.Refs.tryRef:(Ljava/lang/Iterable;)Lorg/apache/cassandra/utils/concurrent/Refs;
astore 8
end local 16 end local 15 end local 14 end local 13 12: StackMap locals:
StackMap stack:
aload 8
ifnull 7
13: aload 0
aload 8
aload 6
invokevirtual org.apache.cassandra.db.SizeEstimatesRecorder.estimatePartitionsCount:(Ljava/util/Collection;Lorg/apache/cassandra/dht/Range;)J
lstore 9
start local 9 14: aload 0
aload 8
invokevirtual org.apache.cassandra.db.SizeEstimatesRecorder.estimateMeanPartitionSize:(Ljava/util/Collection;)J
lstore 11
start local 11 15: goto 20
end local 11 end local 9 16: StackMap locals:
StackMap stack: java.lang.Throwable
astore 17
17: aload 8
ifnull 19
18: aload 8
invokevirtual org.apache.cassandra.utils.concurrent.Refs.release:()V
19: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.utils.concurrent.Refs top top top top top top top top java.lang.Throwable
StackMap stack:
aload 17
athrow
start local 9 start local 11 20: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.dht.Range java.util.Iterator org.apache.cassandra.utils.concurrent.Refs long long
StackMap stack:
aload 8
ifnull 22
21: aload 8
invokevirtual org.apache.cassandra.utils.concurrent.Refs.release:()V
22: StackMap locals:
StackMap stack:
aload 3
aload 6
lload 9
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
lload 11
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 11 end local 9 end local 8 end local 6 23: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map org.apache.cassandra.dht.Range java.util.Iterator top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 4 24: StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder org.apache.cassandra.db.ColumnFamilyStore java.util.Collection java.util.Map top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
25: aload 1
getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
getfield org.apache.cassandra.config.CFMetaData.ksName:Ljava/lang/String;
aload 1
getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
getfield org.apache.cassandra.config.CFMetaData.cfName:Ljava/lang/String;
aload 3
invokestatic org.apache.cassandra.db.SystemKeyspace.updateSizeEstimates:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
26: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
0 27 1 table Lorg/apache/cassandra/db/ColumnFamilyStore;
0 27 2 localRanges Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
1 27 3 estimates Ljava/util/Map<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;Lorg/apache/cassandra/utils/Pair<Ljava/lang/Long;Ljava/lang/Long;>;>;
3 24 4 localRange Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
5 23 6 unwrappedRange Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
6 23 8 refs Lorg/apache/cassandra/utils/concurrent/Refs<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
14 16 9 partitionsCount J
20 23 9 partitionsCount J
15 16 11 meanPartitionSize J
20 23 11 meanPartitionSize J
8 12 13 sstables Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
9 12 14 tree Lorg/apache/cassandra/db/lifecycle/SSTableIntervalTree;
10 12 15 r Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/db/PartitionPosition;>;
11 12 16 canonicalSSTables Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
Exception table:
from to target type
6 16 16 any
Signature: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;)V
MethodParameters:
Name Flags
table
localRanges
private long estimatePartitionsCount(java.util.Collection<org.apache.cassandra.io.sstable.format.SSTableReader>, org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
descriptor: (Ljava/util/Collection;Lorg/apache/cassandra/dht/Range;)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: lconst_0
lstore 3
start local 3 1: aload 1
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 4
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder java.util.Collection org.apache.cassandra.dht.Range long top java.util.Iterator
StackMap stack:
2: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.io.sstable.format.SSTableReader
astore 5
start local 5 3: lload 3
aload 5
aload 2
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.estimatedKeysForRanges:(Ljava/util/Collection;)J
ladd
lstore 3
end local 5 4: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: lload 3
lreturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
0 6 1 sstables Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
0 6 2 range Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
1 6 3 count J
3 4 5 sstable Lorg/apache/cassandra/io/sstable/format/SSTableReader;
Signature: (Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)J
MethodParameters:
Name Flags
sstables
range
private long estimateMeanPartitionSize(java.util.Collection<org.apache.cassandra.io.sstable.format.SSTableReader>);
descriptor: (Ljava/util/Collection;)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=10, args_size=2
start local 0 start local 1 0: lconst_0
lstore 2
start local 2 1: lconst_0
lstore 4
start local 4 2: aload 1
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 7
goto 7
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder java.util.Collection long long top java.util.Iterator
StackMap stack:
3: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.io.sstable.format.SSTableReader
astore 6
start local 6 4: aload 6
invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getEstimatedPartitionSize:()Lorg/apache/cassandra/utils/EstimatedHistogram;
invokevirtual org.apache.cassandra.utils.EstimatedHistogram.count:()J
lstore 8
start local 8 5: lload 2
aload 6
invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getEstimatedPartitionSize:()Lorg/apache/cassandra/utils/EstimatedHistogram;
invokevirtual org.apache.cassandra.utils.EstimatedHistogram.mean:()J
lload 8
lmul
ladd
lstore 2
6: lload 4
lload 8
ladd
lstore 4
end local 8 end local 6 7: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
8: lload 4
lconst_0
lcmp
ifle 9
lload 2
lload 4
ldiv
goto 10
StackMap locals: org.apache.cassandra.db.SizeEstimatesRecorder java.util.Collection long long
StackMap stack:
9: lconst_0
StackMap locals:
StackMap stack: long
10: lreturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
0 11 1 sstables Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
1 11 2 sum J
2 11 4 count J
4 7 6 sstable Lorg/apache/cassandra/io/sstable/format/SSTableReader;
5 7 8 n J
Signature: (Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;)J
MethodParameters:
Name Flags
sstables
public void onDropColumnFamily(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokestatic org.apache.cassandra.db.SystemKeyspace.clearSizeEstimates:(Ljava/lang/String;Ljava/lang/String;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/cassandra/db/SizeEstimatesRecorder;
0 2 1 keyspace Ljava/lang/String;
0 2 2 table Ljava/lang/String;
MethodParameters:
Name Flags
keyspace
table
}
SourceFile: "SizeEstimatesRecorder.java"