[ 
https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Andika updated RATIS-2390:
-------------------------------
        Parent: RATIS-2370
    Issue Type: Sub-task  (was: Improvement)

> Granular segment lock for SegmentedRaftLog
> ------------------------------------------
>
>                 Key: RATIS-2390
>                 URL: https://issues.apache.org/jira/browse/RATIS-2390
>             Project: Ratis
>          Issue Type: Sub-task
>          Components: RaftLog, server
>            Reporter: Ivan Andika
>            Priority: Major
>              Labels: performance
>
> Currently, SegmentedRaftLog uses RaftLogBase.lock for all its operations even 
> those that only operates on certain segments (e.g. purge, appends). It might 
> be possible to reduce lock contention by having a unique lock per segment 
> (following the segment lifecycle).
> For example, operations that need to operate on segments only need to hold 
> read lock on the top level RaftLogBase.lock (in case top level attributes 
> like commitIndex, snapshotIndex, etc are updated) and subsequently try to 
> hold SegmentedRaftLog segment locks. We can implement something like 
> writeLock(TermIndex fromIndex, TermIndex toIndex) and SegmentedRaftLog should 
> only pick the segments locks for that range.



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

Reply via email to