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

Stefan Miklosovic updated CASSANDRA-18271:
------------------------------------------
    Description: 
Currently, there is a lot of places where snapshotting logic is in place, 
scattered across the codebase. We should centralize snapshotting logic under 
SnapshotManager so every place in the code interacts only with that. This 
should remove whole class of possible synchronization problems. Merely looking 
into the code, all these methods are potentially unsafe.
{code:java}
public Map<String, TableSnapshot> listSnapshots()
protected TableSnapshot buildSnapshot(String tag, SnapshotManifest manifest, 
Set<File> snapshotDirs) {
protected static SnapshotManifest maybeLoadManifest(String keyspace, String 
table, String tag, Set<File> snapshotDirs)
public List<String> listEphemeralSnapshots()
private List<File> listAllSnapshots()
protected Map<String, Set<File>> listSnapshotDirsByTag()
public boolean snapshotExists(String snapshotName)
public static void clearSnapshot(String snapshotName, List<File> 
tableDirectories, RateLimiter snapshotRateLimiter)
public synchronized static void removeSnapshotDirectory(RateLimiter 
snapshotRateLimiter, File snapshotDir)
public long trueSnapshotsSize()
{code}

  was:
Currently, there is a lot of places where snapshotting logic is in place, 
scattered across the codebase. We should centralize snapshotting logic under 
SnapshotManager so every place in the code interacts only with that. This 
should remove whole class of possible synchronization problems. Merely looking 
into the code, these all methods are in potentially unsafe.

{code}
public Map<String, TableSnapshot> listSnapshots()
protected TableSnapshot buildSnapshot(String tag, SnapshotManifest manifest, 
Set<File> snapshotDirs) {
protected static SnapshotManifest maybeLoadManifest(String keyspace, String 
table, String tag, Set<File> snapshotDirs)
public List<String> listEphemeralSnapshots()
private List<File> listAllSnapshots()
protected Map<String, Set<File>> listSnapshotDirsByTag()
public boolean snapshotExists(String snapshotName)
public static void clearSnapshot(String snapshotName, List<File> 
tableDirectories, RateLimiter snapshotRateLimiter)
public synchronized static void removeSnapshotDirectory(RateLimiter 
snapshotRateLimiter, File snapshotDir)
public long trueSnapshotsSize()
{code}



> Centralize all snapshot operations to SnapshotManager
> -----------------------------------------------------
>
>                 Key: CASSANDRA-18271
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18271
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local/Snapshots
>            Reporter: Stefan Miklosovic
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>             Fix For: 4.x
>
>
> Currently, there is a lot of places where snapshotting logic is in place, 
> scattered across the codebase. We should centralize snapshotting logic under 
> SnapshotManager so every place in the code interacts only with that. This 
> should remove whole class of possible synchronization problems. Merely 
> looking into the code, all these methods are potentially unsafe.
> {code:java}
> public Map<String, TableSnapshot> listSnapshots()
> protected TableSnapshot buildSnapshot(String tag, SnapshotManifest manifest, 
> Set<File> snapshotDirs) {
> protected static SnapshotManifest maybeLoadManifest(String keyspace, String 
> table, String tag, Set<File> snapshotDirs)
> public List<String> listEphemeralSnapshots()
> private List<File> listAllSnapshots()
> protected Map<String, Set<File>> listSnapshotDirsByTag()
> public boolean snapshotExists(String snapshotName)
> public static void clearSnapshot(String snapshotName, List<File> 
> tableDirectories, RateLimiter snapshotRateLimiter)
> public synchronized static void removeSnapshotDirectory(RateLimiter 
> snapshotRateLimiter, File snapshotDir)
> public long trueSnapshotsSize()
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to