use of alluxio.master.StateLockManager in project alluxio by Alluxio.
the class BackupCommandStateLockingIntegrationTest method timeoutWhenStateLockAcquired.
@Test
public void timeoutWhenStateLockAcquired() throws Exception {
// Grab the master state-lock-manager via reflection.
MasterProcess masterProcess = Whitebox.getInternalState(mLocalAlluxioCluster.getLocalAlluxioMaster(), "mMasterProcess");
MasterContext masterCtx = Whitebox.getInternalState(masterProcess, "mContext");
StateLockManager stateLockManager = masterCtx.getStateLockManager();
// Lock the state-change lock on the master before initiating the backup.
try (LockResource lr = stateLockManager.lockExclusive(StateLockOptions.defaults())) {
// Prepare for a backup.
Path dir = Paths.get(ServerConfiguration.getString(PropertyKey.MASTER_BACKUP_DIRECTORY));
Files.createDirectories(dir);
assertEquals(0, Files.list(dir).count());
// Initiate backup. It should fail.
int errCode = mFsAdminShell.run("backup");
assertTrue(mOutput.toString().contains(ExceptionMessage.STATE_LOCK_TIMED_OUT.getMessage(3000)));
assertNotEquals(0, errCode);
}
}
use of alluxio.master.StateLockManager in project alluxio by Alluxio.
the class BackupCommandStateLockingIntegrationTest method takeBackupDuringExclusiveOnlyPhase.
@Test
public void takeBackupDuringExclusiveOnlyPhase() throws Exception {
// Grab the master state-lock-manager via reflection.
MasterProcess masterProcess = Whitebox.getInternalState(mLocalAlluxioCluster.getLocalAlluxioMaster(), "mMasterProcess");
MasterContext masterCtx = Whitebox.getInternalState(masterProcess, "mContext");
StateLockManager stateLockManager = masterCtx.getStateLockManager();
// Activate exclusive-only phase via reflection.
// Cannot make via cluster property due to lack of support from test utilities.
long exclusiveOnlyDurationMs = 30000;
Whitebox.setInternalState(stateLockManager, "mExclusiveOnlyDeadlineMs", System.currentTimeMillis() + exclusiveOnlyDurationMs);
try {
// getStatus() should fail during exclusive-only phase.
mException.expect(AlluxioException.class);
mLocalAlluxioCluster.getClient().getStatus(new AlluxioURI("/"));
// Prepare for a backup.
Path dir = Paths.get(ServerConfiguration.getString(PropertyKey.MASTER_BACKUP_DIRECTORY));
Files.createDirectories(dir);
assertEquals(0, Files.list(dir).count());
// Take the backup. It should be allowed.
int errCode = mFsAdminShell.run("backup");
assertEquals("", mErrOutput.toString());
assertEquals(0, errCode);
assertEquals(1, Files.list(dir).count());
} finally {
// Reset exclusive-only phase.
Whitebox.setInternalState(stateLockManager, "mExclusiveOnlyDeadlineMs", -1);
}
}
Aggregations