public class org.apache.lucene.search.SearcherLifetimeManager implements java.io.Closeable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.lucene.search.SearcherLifetimeManager
super_class: java.lang.Object
{
static final double NANOS_PER_SEC;
descriptor: D
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 1.0E9
private volatile boolean closed;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private final java.util.concurrent.ConcurrentHashMap<java.lang.Long, org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker> searchers;
descriptor: Ljava/util/concurrent/ConcurrentHashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Long;Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;>;
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
private void ensureOpen();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.closed:Z
ifeq 2
1: new org.apache.lucene.store.AlreadyClosedException
dup
ldc "this SearcherLifetimeManager instance is closed"
invokespecial org.apache.lucene.store.AlreadyClosedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
public long record(org.apache.lucene.search.IndexSearcher);
descriptor: (Lorg/apache/lucene/search/IndexSearcher;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.apache.lucene.search.SearcherLifetimeManager.ensureOpen:()V
1: aload 1
invokevirtual org.apache.lucene.search.IndexSearcher.getIndexReader:()Lorg/apache/lucene/index/IndexReader;
checkcast org.apache.lucene.index.DirectoryReader
invokevirtual org.apache.lucene.index.DirectoryReader.getVersion:()J
lstore 2
start local 2 2: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
lload 2
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
astore 4
start local 4 3: aload 4
ifnonnull 8
4: new org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
dup
aload 1
invokespecial org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.<init>:(Lorg/apache/lucene/search/IndexSearcher;)V
astore 4
5: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
lload 2
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aload 4
invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
ifnull 10
6: aload 4
invokevirtual org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.close:()V
7: goto 10
StackMap locals: long org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
StackMap stack:
8: aload 4
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.searcher:Lorg/apache/lucene/search/IndexSearcher;
aload 1
if_acmpeq 10
9: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "the provided searcher has the same underlying reader version yet the searcher instance differs from before (new="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " vs old="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.searcher:Lorg/apache/lucene/search/IndexSearcher;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
lload 2
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/lucene/search/SearcherLifetimeManager;
0 11 1 searcher Lorg/apache/lucene/search/IndexSearcher;
2 11 2 version J
3 11 4 tracker Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
searcher
public org.apache.lucene.search.IndexSearcher acquire(long);
descriptor: (J)Lorg/apache/lucene/search/IndexSearcher;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.apache.lucene.search.SearcherLifetimeManager.ensureOpen:()V
1: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
astore 3
start local 3 2: aload 3
ifnull 5
3: aload 3
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.searcher:Lorg/apache/lucene/search/IndexSearcher;
invokevirtual org.apache.lucene.search.IndexSearcher.getIndexReader:()Lorg/apache/lucene/index/IndexReader;
invokevirtual org.apache.lucene.index.IndexReader.tryIncRef:()Z
ifeq 5
4: aload 3
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.searcher:Lorg/apache/lucene/search/IndexSearcher;
areturn
5: StackMap locals: org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
StackMap stack:
aconst_null
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
0 6 1 version J
2 6 3 tracker Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;
MethodParameters:
Name Flags
version
public void release(org.apache.lucene.search.IndexSearcher);
descriptor: (Lorg/apache/lucene/search/IndexSearcher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.apache.lucene.search.IndexSearcher.getIndexReader:()Lorg/apache/lucene/index/IndexReader;
invokevirtual org.apache.lucene.index.IndexReader.decRef:()V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
0 2 1 s Lorg/apache/lucene/search/IndexSearcher;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
public synchronized void prune(org.apache.lucene.search.SearcherLifetimeManager$Pruner);
descriptor: (Lorg/apache/lucene/search/SearcherLifetimeManager$Pruner;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=11, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: org.apache.lucene.search.SearcherLifetimeManager org.apache.lucene.search.SearcherLifetimeManager$Pruner java.util.List top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
astore 3
start local 3 3: aload 2
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 2
invokestatic java.util.Collections.sort:(Ljava/util/List;)V
6: dconst_0
dstore 3
start local 3 7: invokestatic java.lang.System.nanoTime:()J
l2d
ldc 1.0E9
ddiv
dstore 5
start local 5 8: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 18
StackMap locals: org.apache.lucene.search.SearcherLifetimeManager org.apache.lucene.search.SearcherLifetimeManager$Pruner java.util.List double double top java.util.Iterator
StackMap stack:
9: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
astore 7
start local 7 10: dload 3
dconst_0
dcmpl
ifne 13
11: dconst_0
dstore 9
start local 9 12: goto 14
end local 9 13: StackMap locals: org.apache.lucene.search.SearcherLifetimeManager org.apache.lucene.search.SearcherLifetimeManager$Pruner java.util.List double double org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker java.util.Iterator
StackMap stack:
dload 5
dload 3
dsub
dstore 9
start local 9 14: StackMap locals: double
StackMap stack:
aload 1
dload 9
aload 7
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.searcher:Lorg/apache/lucene/search/IndexSearcher;
invokeinterface org.apache.lucene.search.SearcherLifetimeManager$Pruner.doPrune:(DLorg/apache/lucene/search/IndexSearcher;)Z
ifeq 17
15: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
aload 7
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.version:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
16: aload 7
invokevirtual org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.close:()V
17: StackMap locals:
StackMap stack:
aload 7
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.recordTimeSec:D
dstore 3
end local 9 end local 7 18: StackMap locals: org.apache.lucene.search.SearcherLifetimeManager org.apache.lucene.search.SearcherLifetimeManager$Pruner java.util.List double double top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
19: return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
0 20 1 pruner Lorg/apache/lucene/search/SearcherLifetimeManager$Pruner;
1 20 2 trackers Ljava/util/List<Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;>;
3 4 3 tracker Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;
7 20 3 lastRecordTimeSec D
8 20 5 now D
10 18 7 tracker Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;
12 13 9 ageSec D
14 18 9 ageSec D
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
pruner
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
iconst_1
putfield org.apache.lucene.search.SearcherLifetimeManager.closed:Z
1: new java.util.ArrayList
dup
aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.values:()Ljava/util/Collection;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
astore 1
start local 1 2: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 5
StackMap locals: org.apache.lucene.search.SearcherLifetimeManager java.util.List top java.util.Iterator
StackMap stack:
3: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
astore 2
start local 2 4: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
aload 2
getfield org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker.version:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 2 5: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
6: aload 1
invokestatic org.apache.lucene.util.IOUtils.close:(Ljava/lang/Iterable;)V
7: aload 0
getfield org.apache.lucene.search.SearcherLifetimeManager.searchers:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
ifeq 9
8: new java.lang.IllegalStateException
dup
ldc "another thread called record while this SearcherLifetimeManager instance was being closed; not all searchers were closed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals: org.apache.lucene.search.SearcherLifetimeManager java.util.List
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/apache/lucene/search/SearcherLifetimeManager;
2 10 1 toClose Ljava/util/List<Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;>;
4 5 2 tracker Lorg/apache/lucene/search/SearcherLifetimeManager$SearcherTracker;
Exceptions:
throws java.io.IOException
}
SourceFile: "SearcherLifetimeManager.java"
NestMembers:
org.apache.lucene.search.SearcherLifetimeManager$PruneByAge org.apache.lucene.search.SearcherLifetimeManager$Pruner org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker
InnerClasses:
public final PruneByAge = org.apache.lucene.search.SearcherLifetimeManager$PruneByAge of org.apache.lucene.search.SearcherLifetimeManager
public abstract Pruner = org.apache.lucene.search.SearcherLifetimeManager$Pruner of org.apache.lucene.search.SearcherLifetimeManager
private SearcherTracker = org.apache.lucene.search.SearcherLifetimeManager$SearcherTracker of org.apache.lucene.search.SearcherLifetimeManager