Sleuth Kit Java Bindings (JNI)  4.11.1
Java bindings for using The Sleuth Kit
org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction Class Reference

Public Member Functions

void commit () throws TskCoreException
 
void rollback () throws TskCoreException
 

Detailed Description

Allows callers to execute multiple database operations in a single transaction. The usual motivations for this are for speed and atomicity.

WARNING: You need to be very careful when using this because it is easy to get the system into a deadlock when using a SQLite database. For example, if you get this transaction, perform some inserts (and you therefore have a write lock on the DB), and then need to query the database from the same thread. If your query does not use this transaction, then it will get a new connection and will be blocked by the connection that is held by the transaction.

If you are using CaseDbTransaction, you need to use only DB methods that also take in a transaction. We recommend that you preprocess as much as possible before getting the transaction to:

  • prevent deadlocks
  • hold on to the transaction for as little time as possible.
Note that this class does not implement the
Transaction interface because that sort of flexibility and its associated
complexity is not needed. Also, TskCoreExceptions are thrown to be
consistent with the outer SleuthkitCase class.

This class will automatically acquire the single user case write lock and
release it when the transaction is closed. Otherwise we risk deadlock
because this transaction can lock up SQLite and make it "busy" and
another thread may get a write lock to the DB, but not be able to do
anything because the DB is busy.

Definition at line 13702 of file SleuthkitCase.java.

Member Function Documentation

void org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction.commit ( ) throws TskCoreException

Commits the transaction on the case database that was begun when this object was constructed.

Exceptions
TskCoreException

Definition at line 13833 of file SleuthkitCase.java.

References org.sleuthkit.datamodel.SleuthkitCase.close(), and org.sleuthkit.datamodel.ScoreChange.getDataSourceObjectId().

Referenced by org.sleuthkit.datamodel.CommunicationsManager.addAccountType(), org.sleuthkit.datamodel.SleuthkitCase.addCarvedFiles(), org.sleuthkit.datamodel.TaggingManager.addContentTag(), org.sleuthkit.datamodel.SleuthkitCase.addDerivedFile(), org.sleuthkit.datamodel.SleuthkitCase.addFileSystemFile(), org.sleuthkit.datamodel.SleuthkitJNI.addImageToDatabase(), org.sleuthkit.datamodel.SleuthkitCase.addLayoutFile(), org.sleuthkit.datamodel.SleuthkitCase.addLayoutFiles(), org.sleuthkit.datamodel.SleuthkitCase.addLocalDirectory(), org.sleuthkit.datamodel.SleuthkitCase.addLocalFile(), org.sleuthkit.datamodel.CommunicationsManager.addRelationships(), org.sleuthkit.datamodel.TaggingManager.addTagSet(), org.sleuthkit.datamodel.SleuthkitCase.addVirtualDirectory(), org.sleuthkit.datamodel.CaseDbAccessManager.alterTable(), org.sleuthkit.datamodel.CaseDbAccessManager.columnExists(), org.sleuthkit.datamodel.Blackboard.deleteAnalysisResult(), org.sleuthkit.datamodel.SleuthkitCase.deleteBlackboardArtifactTag(), org.sleuthkit.datamodel.SleuthkitCase.deleteContentTag(), org.sleuthkit.datamodel.HostManager.deleteHost(), org.sleuthkit.datamodel.TaggingManager.deleteTagSet(), org.sleuthkit.datamodel.Blackboard.getOrAddArtifactType(), org.sleuthkit.datamodel.Blackboard.getOrAddAttributeType(), org.sleuthkit.datamodel.CaseDbAccessManager.insert(), org.sleuthkit.datamodel.CaseDbAccessManager.insertOrUpdate(), org.sleuthkit.datamodel.HostManager.mergeHosts(), org.sleuthkit.datamodel.Report.newAnalysisResult(), org.sleuthkit.datamodel.AbstractContent.newAnalysisResult(), org.sleuthkit.datamodel.BlackboardArtifact.newAnalysisResult(), org.sleuthkit.datamodel.Blackboard.newAnalysisResult(), org.sleuthkit.datamodel.Blackboard.newDataArtifact(), org.sleuthkit.datamodel.HostManager.newHost(), org.sleuthkit.datamodel.OsAccountManager.newWindowsOsAccount(), org.sleuthkit.datamodel.AbstractFile.save(), org.sleuthkit.datamodel.CaseDbAccessManager.tableExists(), org.sleuthkit.datamodel.CaseDbAccessManager.update(), org.sleuthkit.datamodel.OsAccountManager.updateCoreWindowsOsAccountAttributes(), org.sleuthkit.datamodel.SleuthkitCase.updateDerivedFile(), and org.sleuthkit.datamodel.OsAccountManager.updateStandardOsAccountAttributes().

void org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction.rollback ( ) throws TskCoreException

Rolls back the transaction on the case database that was begun when this object was constructed.

Exceptions
TskCoreException

Definition at line 13872 of file SleuthkitCase.java.

References org.sleuthkit.datamodel.SleuthkitCase.close().

Referenced by org.sleuthkit.datamodel.CommunicationsManager.addAccountType(), org.sleuthkit.datamodel.SleuthkitCase.addCarvedFiles(), org.sleuthkit.datamodel.TaggingManager.addContentTag(), org.sleuthkit.datamodel.SleuthkitCase.addDerivedFile(), org.sleuthkit.datamodel.SleuthkitCase.addFileSystemFile(), org.sleuthkit.datamodel.SleuthkitJNI.addImageToDatabase(), org.sleuthkit.datamodel.SleuthkitCase.addLayoutFile(), org.sleuthkit.datamodel.SleuthkitCase.addLayoutFiles(), org.sleuthkit.datamodel.SleuthkitCase.addLocalDirectory(), org.sleuthkit.datamodel.SleuthkitCase.addLocalFile(), org.sleuthkit.datamodel.CommunicationsManager.addRelationships(), org.sleuthkit.datamodel.TaggingManager.addTagSet(), org.sleuthkit.datamodel.SleuthkitCase.addVirtualDirectory(), org.sleuthkit.datamodel.CaseDbAccessManager.alterTable(), org.sleuthkit.datamodel.CaseDbAccessManager.columnExists(), org.sleuthkit.datamodel.Blackboard.deleteAnalysisResult(), org.sleuthkit.datamodel.SleuthkitCase.deleteBlackboardArtifactTag(), org.sleuthkit.datamodel.SleuthkitCase.deleteContentTag(), org.sleuthkit.datamodel.HostManager.deleteHost(), org.sleuthkit.datamodel.TaggingManager.deleteTagSet(), org.sleuthkit.datamodel.Blackboard.getOrAddArtifactType(), org.sleuthkit.datamodel.Blackboard.getOrAddAttributeType(), org.sleuthkit.datamodel.CaseDbAccessManager.insert(), org.sleuthkit.datamodel.CaseDbAccessManager.insertOrUpdate(), org.sleuthkit.datamodel.HostManager.mergeHosts(), org.sleuthkit.datamodel.Report.newAnalysisResult(), org.sleuthkit.datamodel.AbstractContent.newAnalysisResult(), org.sleuthkit.datamodel.BlackboardArtifact.newAnalysisResult(), org.sleuthkit.datamodel.Blackboard.newAnalysisResult(), org.sleuthkit.datamodel.Blackboard.newDataArtifact(), org.sleuthkit.datamodel.HostManager.newHost(), org.sleuthkit.datamodel.OsAccountManager.newWindowsOsAccount(), org.sleuthkit.datamodel.AbstractFile.save(), org.sleuthkit.datamodel.CaseDbAccessManager.tableExists(), org.sleuthkit.datamodel.CaseDbAccessManager.update(), org.sleuthkit.datamodel.OsAccountManager.updateCoreWindowsOsAccountAttributes(), org.sleuthkit.datamodel.SleuthkitCase.updateDerivedFile(), and org.sleuthkit.datamodel.OsAccountManager.updateStandardOsAccountAttributes().


The documentation for this class was generated from the following file:

Copyright © 2011-2021 Brian Carrier. (carrier -at- sleuthkit -dot- org)
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.