Package org.apache.solr.update
Class TransactionLog
- java.lang.Object
- 
- org.apache.solr.update.TransactionLog
 
- 
- All Implemented Interfaces:
- Closeable,- AutoCloseable
 
 public class TransactionLog extends Object implements Closeable Log Format: List{Operation, Version, ...} ADD, VERSION, DOC DELETE, VERSION, ID_BYTES DELETE_BY_QUERY, VERSION, StringTODO: keep two files, one for [operation, version, id] and the other for the actual document data. That way we could throw away document log files more readily while retaining the smaller operation log files longer (and we can retrieve the stored fields from the latest documents from the index). This would require keeping all source fields stored of course. This would also allow to not log document data for requests with commit=true in them (since we know that if the request succeeds, all docs will be committed) 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description classTransactionLog.FSReverseReaderclassTransactionLog.LogCodecclassTransactionLog.LogReaderclassTransactionLog.ReverseReaderclassTransactionLog.SortedLogReader
 - 
Field SummaryFields Modifier and Type Field Description protected booleandeleteOnClosestatic StringEND_MESSAGEprotected FastOutputStreamfosprotected List<String>globalStringListprotected Map<String,Integer>globalStringMapbooleanisBufferprotected AtomicIntegerrefcountprotected static JavaBinCodec.ObjectResolverresolver
 - 
Constructor SummaryConstructors Modifier Constructor Description protectedTransactionLog()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddGlobalStrings(Collection<String> strings)protected voidcheckWriteHeader(TransactionLog.LogCodec codec, SolrInputDocument optional)voidclose()voidcloseOutput()Move to a read-only state, closing and releasing resources while keeping the log available for readsvoiddecref()protected voidendRecord(long startRecordPosition)booleanendsWithCommit()voidfinish(UpdateLog.SyncLevel syncLevel)voidforceClose()longgetLogSize()longgetLogSizeFromStream()TransactionLog.LogReadergetReader(long startingPos)Returns a reader that can be used while a log is still in use.TransactionLog.ReverseReadergetReverseReader()Returns a single threaded reverse readerTransactionLog.LogReadergetSortedReader(long startingPos)voidincref()Objectlookup(long pos)intnumRecords()Returns the number of records in the log (currently includes the header and an optional commit).longposition()returns the current position in the log fileStringtoString()booleantry_incref()longwrite(AddUpdateCommand cmd)Writes an add update command to the transaction log.longwrite(AddUpdateCommand cmd, long prevPointer)Writes an add update command to the transaction log.longwriteCommit(CommitUpdateCommand cmd)longwriteData(Object o)longwriteDelete(DeleteUpdateCommand cmd)longwriteDeleteByQuery(DeleteUpdateCommand cmd)protected voidwriteLogHeader(TransactionLog.LogCodec codec)
 
- 
- 
- 
Field Detail- 
END_MESSAGEpublic static final String END_MESSAGE - See Also:
- Constant Field Values
 
 - 
fosprotected FastOutputStream fos 
 - 
isBufferpublic boolean isBuffer 
 - 
deleteOnCloseprotected volatile boolean deleteOnClose 
 - 
refcountprotected AtomicInteger refcount 
 - 
resolverprotected static final JavaBinCodec.ObjectResolver resolver 
 
- 
 - 
Method Detail- 
numRecordspublic int numRecords() Returns the number of records in the log (currently includes the header and an optional commit). Note: currently returns 0 for reopened existing log files.
 - 
endsWithCommitpublic boolean endsWithCommit() throws IOException- Throws:
- IOException
 
 - 
writeDatapublic long writeData(Object o) 
 - 
addGlobalStringsprotected void addGlobalStrings(Collection<String> strings) 
 - 
writeLogHeaderprotected void writeLogHeader(TransactionLog.LogCodec codec) throws IOException - Throws:
- IOException
 
 - 
endRecordprotected void endRecord(long startRecordPosition) throws IOException- Throws:
- IOException
 
 - 
checkWriteHeaderprotected void checkWriteHeader(TransactionLog.LogCodec codec, SolrInputDocument optional) throws IOException - Throws:
- IOException
 
 - 
writepublic long write(AddUpdateCommand cmd) Writes an add update command to the transaction log. This is not applicable for in-place updates; usewrite(AddUpdateCommand, long). (The previous pointer (applicable for in-place updates) is set to -1 while writing the command to the transaction log.)- Parameters:
- cmd- The add update command to be written
- Returns:
- Returns the position pointer of the written update command
- See Also:
- write(AddUpdateCommand, long)
 
 - 
writepublic long write(AddUpdateCommand cmd, long prevPointer) Writes an add update command to the transaction log. This should be called only for writing in-place updates, or else pass -1 as the prevPointer.- Parameters:
- cmd- The add update command to be written
- prevPointer- The pointer in the transaction log which this update depends on (applicable for in-place updates)
- Returns:
- Returns the position pointer of the written update command
 
 - 
writeDeletepublic long writeDelete(DeleteUpdateCommand cmd) 
 - 
writeDeleteByQuerypublic long writeDeleteByQuery(DeleteUpdateCommand cmd) 
 - 
writeCommitpublic long writeCommit(CommitUpdateCommand cmd) 
 - 
lookuppublic Object lookup(long pos) 
 - 
increfpublic void incref() 
 - 
try_increfpublic boolean try_incref() 
 - 
decrefpublic void decref() 
 - 
positionpublic long position() returns the current position in the log file
 - 
closeOutputpublic void closeOutput() Move to a read-only state, closing and releasing resources while keeping the log available for reads
 - 
finishpublic void finish(UpdateLog.SyncLevel syncLevel) 
 - 
closepublic void close() - Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
 
 - 
forceClosepublic void forceClose() 
 - 
getLogSizepublic long getLogSize() 
 - 
getLogSizeFromStreampublic long getLogSizeFromStream() - Returns:
- the FastOutputStream size
 
 - 
getReaderpublic TransactionLog.LogReader getReader(long startingPos) Returns a reader that can be used while a log is still in use. Currently only *one* LogReader may be outstanding, and that log may only be used from a single thread.
 - 
getSortedReaderpublic TransactionLog.LogReader getSortedReader(long startingPos) 
 - 
getReverseReaderpublic TransactionLog.ReverseReader getReverseReader() throws IOException Returns a single threaded reverse reader- Throws:
- IOException
 
 
- 
 
-