| Code with Finding: |
class TermsHash {
synchronized void flush(Map threadsAndFields, final SegmentWriteState state) throws IOException {
Map childThreadsAndFields = new HashMap();
Map nextThreadsAndFields;
if (nextTermsHash != null)
nextThreadsAndFields = new HashMap();
else
nextThreadsAndFields = null;
Iterator it = threadsAndFields.entrySet().iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
TermsHashPerThread perThread = (TermsHashPerThread) entry.getKey();
Collection fields = (Collection) entry.getValue();
Iterator fieldsIt = fields.iterator();
Collection childFields = new HashSet();
Collection nextChildFields;
if (nextTermsHash != null)
nextChildFields = new HashSet();
else
nextChildFields = null;
while(fieldsIt.hasNext()) {
TermsHashPerField perField = (TermsHashPerField) fieldsIt.next();
childFields.add(perField.consumer);
if (nextTermsHash != null)
nextChildFields.add(perField.nextPerField);
}
childThreadsAndFields.put(perThread.consumer, childFields);
if (nextTermsHash != null)
nextThreadsAndFields.put(perThread.nextPerThread, nextChildFields);
}
consumer.flush(childThreadsAndFields, state);
shrinkFreePostings(threadsAndFields, state);
if (nextTermsHash != null)
nextTermsHash.flush(nextThreadsAndFields, state);
}
}
|