[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Description: 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. was: 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. 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. > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Description: 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. 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. was: 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. For example, operations that need to operate on segments only need to hold read lock on 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. > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > 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. > 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Description: 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. For example, operations that need to operate on segments only need to hold read lock on 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. was: 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 contention by having a unique lock per segment. For example, operations that need to operate on segments only need to hold read lock on 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. > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > 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. > For example, operations that need to operate on segments only need to hold > read lock on 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Description: 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 contention by having a unique lock per segment. For example, operations that need to operate on segments only need to hold read lock on 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. was: 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 contention by having a unique lock per segment. For example, operations that need to operate on segments only need to hold read lock on RaftLogBase.lock 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. > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > 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 contention by having a unique lock per segment. > For example, operations that need to operate on segments only need to hold > read lock on 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Labels: performance (was: ) > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > Components: RaftLog >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 contention by having a unique lock per segment. > For example, operations that need to operate on segments only need to hold > read lock on RaftLogBase.lock 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Component/s: server > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > 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 contention by having a unique lock per segment. > For example, operations that need to operate on segments only need to hold > read lock on RaftLogBase.lock 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)
[jira] [Updated] (RATIS-2390) Granular segment lock for SegmentedRaftLog
[ https://issues.apache.org/jira/browse/RATIS-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ivan Andika updated RATIS-2390: --- Component/s: RaftLog > Granular segment lock for SegmentedRaftLog > -- > > Key: RATIS-2390 > URL: https://issues.apache.org/jira/browse/RATIS-2390 > Project: Ratis > Issue Type: Improvement > Components: RaftLog >Reporter: Ivan Andika >Priority: Major > > 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 contention by having a unique lock per segment. > For example, operations that need to operate on segments only need to hold > read lock on RaftLogBase.lock 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)
