[ https://issues.apache.org/jira/browse/HBASE-17992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16488338#comment-16488338 ]
Bo Cui edited comment on HBASE-17992 at 5/24/18 2:54 AM: --------------------------------------------------------- i looked at the latest code. it has not existed in 1.0.2 and 1.3.1. It has been solved by SnapshotFileCache. {code:java} See HBASE-16464{code} {code:java} // code placeholder List<String> getSnapshotsInProgress() throws IOException { List<String> snapshotInProgress = Lists.newArrayList(); // only add those files to the cache, but not to the known snapshots Path snapshotTmpDir = new Path(snapshotDir, SnapshotDescriptionUtils.SNAPSHOT_TMP_DIR_NAME); // only add those files to the cache, but not to the known snapshots FileStatus[] running = FSUtils.listStatus(fs, snapshotTmpDir); if (running != null) { for (FileStatus run : running) { try { snapshotInProgress.addAll(fileInspector.filesUnderSnapshot(run.getPath())); } catch (CorruptedSnapshotException e) { // See HBASE-16464 if (e.getCause() instanceof FileNotFoundException) { // If the snapshot is not in progress, we will delete it if (!fs.exists(new Path(run.getPath(), SnapshotDescriptionUtils.SNAPSHOT_IN_PROGRESS))) { fs.delete(run.getPath(), true); LOG.warn("delete the " + run.getPath() + " due to exception:", e.getCause()); } } else { throw e; } } } } return snapshotInProgress; } {code} was (Author: bo cui): i looked at the latest code. it has not existed in 1.0.2 and 1.3.1. {code:java} See HBASE-16464{code} {code:java} // code placeholder List<String> getSnapshotsInProgress() throws IOException { List<String> snapshotInProgress = Lists.newArrayList(); // only add those files to the cache, but not to the known snapshots Path snapshotTmpDir = new Path(snapshotDir, SnapshotDescriptionUtils.SNAPSHOT_TMP_DIR_NAME); // only add those files to the cache, but not to the known snapshots FileStatus[] running = FSUtils.listStatus(fs, snapshotTmpDir); if (running != null) { for (FileStatus run : running) { try { snapshotInProgress.addAll(fileInspector.filesUnderSnapshot(run.getPath())); } catch (CorruptedSnapshotException e) { // See HBASE-16464 if (e.getCause() instanceof FileNotFoundException) { // If the snapshot is not in progress, we will delete it if (!fs.exists(new Path(run.getPath(), SnapshotDescriptionUtils.SNAPSHOT_IN_PROGRESS))) { fs.delete(run.getPath(), true); LOG.warn("delete the " + run.getPath() + " due to exception:", e.getCause()); } } else { throw e; } } } } return snapshotInProgress; } {code} > The snapShot TimeoutException causes the cleanerChore thread to fail to > complete the archive correctly > ------------------------------------------------------------------------------------------------------ > > Key: HBASE-17992 > URL: https://issues.apache.org/jira/browse/HBASE-17992 > Project: HBase > Issue Type: Bug > Components: snapshots > Affects Versions: 0.98.10, 1.3.0 > Reporter: Bo Cui > Priority: Major > Attachments: hbase-17992-0.98.patch, hbase-17992-1.3.patch, > hbase-17992-master.patch, hbase-17992.patch > > > The problem is that when the snapshot occurs TimeoutException or other > Exceptions, there is no correct delete /hbase/.hbase-snapshot/tmp, which > causes the cleanerChore to fail to complete the archive correctly. > Modifying the configuration parameter (hbase.snapshot.master.timeout.millis = > 600000) only reduces the probability of the problem occurring. > So the solution to the problem is: multi-Threaded exceptions or > TimeoutExceptions, the Main-thread must wait until all the tasks are finished > or canceled, the Main-thread can be cleared > /hbase/.hbase-snapshot/tmp/snapshotName.Otherwise the task is likely to write > /hbase/.hbase-snapshot/tmp/snapshotName/region - mainfest > The problem exists in disabledTableSnapshot and enabledTableSnapshot, because > I'm currently using the disabledTableSnapshot, so I provide the patch of > disabledTableSnapshot -- This message was sent by Atlassian JIRA (v7.6.3#76005)