[ 
https://issues.apache.org/jira/browse/TINKERPOP-3282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18120403#comment-18120403
 ] 

ASF GitHub Bot commented on TINKERPOP-3282:
-------------------------------------------

kenhuuu commented on PR #3639:
URL: https://github.com/apache/tinkerpop/pull/3639#issuecomment-5879219478

   I think one of the existing design choices made for the original 
TinkerTransactionGraph causes real problems with this implementation. The 
decision to make every attempt to lock that conflicted throw a 
TransactionException made sense when TinkerTransactionGraph was just for unit 
testing transactions. However, since this is now supposed to be a fully capable 
production-ready Graph, that logic doesn't really hold. When there are multiple 
users, even moderately concurrent workloads might result in immediate 
TransactionExceptions that the user will need to retry themselves.
   
   Some choices made here exacerbate the situation.
   1. The need to acquire locks on elements and then a global lock which then 
calls `fsync` while holding all the locks means that these locks are held even 
longer than before.
   2. A compaction will block every commit
   
   So lock contention was already going to be a problem before, but this 
current design requires you hold these locks for even longer. I don't think 
users will find it acceptable that they are constantly getting 
TransactionExceptions. We probably need to move to a lock wait solution which 
while increases the chances of deadlock or we drastically reduce the time you 
need to hold the locks and add retry for transactions into the GLVs. Either 
would probably result in a better user experience.




> TinkerGraph file persistence
> ----------------------------
>
>                 Key: TINKERPOP-3282
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3282
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: tinkergraph
>    Affects Versions: 3.7.6
>            Reporter: Stephen Mallette
>            Assignee: Stephen Mallette
>            Priority: Major
>
> Give TinkerGraph a basic file persistence option tied to its transactional 
> usage so that it can support some more complex use cases.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to