use of alluxio.client.lineage.LineageMasterClient in project alluxio by Alluxio.
the class LineageMasterIntegrationTest method lineageCreation.
@Test
public void lineageCreation() throws Exception {
try (LineageMasterClient lineageMasterClient = getLineageMasterClient()) {
ArrayList<String> outFiles = new ArrayList<>();
Collections.addAll(outFiles, OUT_FILE);
lineageMasterClient.createLineage(new ArrayList<String>(), outFiles, mJob);
List<LineageInfo> infos = lineageMasterClient.getLineageInfoList();
Assert.assertEquals(1, infos.size());
AlluxioURI uri = new AlluxioURI(infos.get(0).getOutputFiles().get(0));
URIStatus status = getFileSystemMasterClient().getStatus(uri);
Assert.assertEquals(PersistenceState.NOT_PERSISTED.toString(), status.getPersistenceState());
Assert.assertFalse(status.isCompleted());
}
}
use of alluxio.client.lineage.LineageMasterClient in project alluxio by Alluxio.
the class LineageMasterIntegrationTest method lineageRecovery.
/**
* Tests that a lineage job is executed when the output file for the lineage is reported as lost.
*
* The checkpoint interval is set high so that we are guaranteed to call reportLostFile
* before persistence is complete.
*/
@Test(timeout = 100000)
@LocalAlluxioClusterResource.Config(confParams = { PropertyKey.Name.MASTER_LINEAGE_CHECKPOINT_INTERVAL_MS, "100000" })
public void lineageRecovery() throws Exception {
final File logFile = mFolder.newFile();
// Delete the log file so that when it starts to exist we know that it was created by the
// lineage recompute job
logFile.delete();
FileSystem fs = FileSystem.Factory.get();
try (LineageMasterClient lineageClient = getLineageMasterClient()) {
lineageClient.createLineage(ImmutableList.<String>of(), ImmutableList.of("/testFile"), new CommandLineJob("echo hello world", new JobConf(logFile.getAbsolutePath())));
FileOutStream out = fs.createFile(new AlluxioURI("/testFile"));
out.write("foo".getBytes());
out.close();
lineageClient.reportLostFile("/testFile");
}
// Wait for the log file to be created by the recompute job
CommonUtils.waitFor("the log file to be written", new Function<Void, Boolean>() {
@Override
public Boolean apply(Void input) {
if (!logFile.exists()) {
return false;
}
try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
String line = reader.readLine();
return line != null && line.equals("hello world");
} catch (Exception e) {
throw Throwables.propagate(e);
}
}
}, WaitForOptions.defaults().setTimeout(100 * Constants.SECOND_MS));
}
use of alluxio.client.lineage.LineageMasterClient in project alluxio by Alluxio.
the class LineageMasterIntegrationTest method lineageCompleteAndAsyncPersist.
@Test
public void lineageCompleteAndAsyncPersist() throws Exception {
try (LineageMasterClient lineageMasterClient = getLineageMasterClient()) {
ArrayList<String> outFiles = new ArrayList<>();
Collections.addAll(outFiles, OUT_FILE);
lineageMasterClient.createLineage(new ArrayList<String>(), outFiles, mJob);
CreateFileOptions options = CreateFileOptions.defaults().setWriteType(WriteType.MUST_CACHE).setBlockSizeBytes(BLOCK_SIZE_BYTES);
LineageFileSystem fs = (LineageFileSystem) mLocalAlluxioClusterResource.get().getClient();
FileOutStream outputStream = fs.createFile(new AlluxioURI(OUT_FILE), options);
outputStream.write(1);
outputStream.close();
List<LineageInfo> infos = lineageMasterClient.getLineageInfoList();
AlluxioURI uri = new AlluxioURI(infos.get(0).getOutputFiles().get(0));
URIStatus status = getFileSystemMasterClient().getStatus(uri);
Assert.assertNotEquals(PersistenceState.PERSISTED.toString(), status.getPersistenceState());
Assert.assertTrue(status.isCompleted());
IntegrationTestUtils.waitForPersist(mLocalAlluxioClusterResource, uri);
// worker notifies the master
status = getFileSystemMasterClient().getStatus(uri);
Assert.assertEquals(PersistenceState.PERSISTED.toString(), status.getPersistenceState());
}
}
Aggregations