Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Currently KernelTransactionImplementations are pooled and reused. This is done with MarshlandPool that has ThreadLocals backed by some other pool. So each thread that executed transactions has a KTI in it's thread local storage and reuses it. Such reuse of KTI instance with their internal state has caused quite some issues because restoring KTIs to the pristine state before putting them back to the pool is tricky. This commit removed pooling of KTIs. So whenever new transaction is started new KTI object is created. Reasons: - biggest reason to pool KTIs is transaction state but it is completely reinitialized when KTI is taken from the pool - recent storage engine API refactoring made KTI state even smaller making even less things added to the pool - code simplification - removed need to reinitialize KTI state Tested: - microbenchmarks via Core API show 30% degradation for tiny read transactions (read couple nodes by id without labels and properties, etc.) and no degradation for read/write transactions of reasonable size - microbenchmarks via Core API show same heap usage and GC - benchmarking read/write Cypher queries show no performance degradation - small LDBC read/write queries shows no performance degradation on a machine with 32 hardware threads - long running soak test shows no throughput degradation, no excessive heap usage and GC activity
- Loading branch information
Showing
11 changed files
with
219 additions
and
284 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.