use of org.apache.gobblin.runtime.api.SpecNotFoundException in project incubator-gobblin by apache.
the class NonObservingFSJobCatalog method remove.
/**
* Allow user to programmatically delete a new JobSpec.
* This method is designed to be reentrant.
* @param jobURI The relative Path that specified by user, need to make it into complete path.
*/
@Override
public synchronized void remove(URI jobURI) {
Preconditions.checkState(state() == State.RUNNING, String.format("%s is not running.", this.getClass().getName()));
try {
long startTime = System.currentTimeMillis();
JobSpec jobSpec = getJobSpec(jobURI);
Path jobSpecPath = getPathForURI(this.jobConfDirPath, jobURI);
if (fs.exists(jobSpecPath)) {
fs.delete(jobSpecPath, false);
this.mutableMetrics.updateRemoveJobTime(startTime);
} else {
LOGGER.warn("No file with URI:" + jobSpecPath + " is found. Deletion failed.");
}
this.listeners.onDeleteJob(jobURI, jobSpec.getVersion());
} catch (IOException e) {
throw new RuntimeException("When removing a JobConf. file, issues unexpected happen:" + e.getMessage());
} catch (SpecNotFoundException e) {
LOGGER.warn("No file with URI:" + jobURI + " is found. Deletion failed.");
}
}
use of org.apache.gobblin.runtime.api.SpecNotFoundException in project incubator-gobblin by apache.
the class EmbeddedGobblin method runAsync.
/**
* Launch the Gobblin job asynchronously. This method will return when the Gobblin job has started.
* @return a {@link JobExecutionDriver}. This object is a future that will resolve when the Gobblin job finishes.
* @throws TimeoutException if the Gobblin job does not start within the launch timeout.
*/
@NotOnCli
public JobExecutionDriver runAsync() throws TimeoutException, InterruptedException {
// Run function to distribute jars to workers in distributed mode
this.distributeJarsFunction.run();
Config sysProps = ConfigFactory.parseMap(this.builtConfigMap).withFallback(this.defaultSysConfig);
Config userConfig = ConfigFactory.parseMap(this.userConfigMap);
JobSpec jobSpec;
if (this.jobFile.isPresent()) {
try {
Path jobFilePath = this.jobFile.get();
PullFileLoader loader = new PullFileLoader(jobFilePath.getParent(), jobFilePath.getFileSystem(new Configuration()), PullFileLoader.DEFAULT_JAVA_PROPS_PULL_FILE_EXTENSIONS, PullFileLoader.DEFAULT_HOCON_PULL_FILE_EXTENSIONS);
Config jobConfig = userConfig.withFallback(loader.loadPullFile(jobFilePath, sysProps, false));
ImmutableFSJobCatalog.JobSpecConverter converter = new ImmutableFSJobCatalog.JobSpecConverter(jobFilePath.getParent(), Optional.<String>absent());
jobSpec = converter.apply(jobConfig);
} catch (IOException ioe) {
throw new RuntimeException("Failed to run embedded Gobblin.", ioe);
}
} else {
Config finalConfig = userConfig.withFallback(sysProps);
if (this.template != null) {
try {
finalConfig = this.template.getResolvedConfig(finalConfig);
} catch (SpecNotFoundException | JobTemplate.TemplateException exc) {
throw new RuntimeException(exc);
}
}
jobSpec = this.specBuilder.withConfig(finalConfig).build();
}
ResolvedJobSpec resolvedJobSpec;
try {
resolvedJobSpec = new ResolvedJobSpec(jobSpec);
} catch (SpecNotFoundException | JobTemplate.TemplateException exc) {
throw new RuntimeException("Failed to resolved template.", exc);
}
final JobCatalog jobCatalog = new StaticJobCatalog(Optional.of(this.useLog), Lists.<JobSpec>newArrayList(resolvedJobSpec));
SimpleGobblinInstanceEnvironment instanceEnvironment = new SimpleGobblinInstanceEnvironment("EmbeddedGobblinInstance", this.useLog, getSysConfig());
StandardGobblinInstanceDriver.Builder builder = new StandardGobblinInstanceDriver.Builder(Optional.<GobblinInstanceEnvironment>of(instanceEnvironment)).withLog(this.useLog).withJobCatalog(jobCatalog).withImmediateJobScheduler();
for (GobblinInstancePluginFactory plugin : this.plugins) {
builder.addPlugin(plugin);
}
final GobblinInstanceDriver driver = builder.build();
EmbeddedJobLifecycleListener listener = new EmbeddedJobLifecycleListener(this.useLog);
driver.registerJobLifecycleListener(listener);
driver.startAsync();
boolean started = listener.awaitStarted(this.launchTimeout.getTimeout(), this.launchTimeout.getTimeUnit());
if (!started) {
log.warn("Timeout waiting for job to start. Aborting.");
driver.stopAsync();
driver.awaitTerminated(this.shutdownTimeout.getTimeout(), this.shutdownTimeout.getTimeUnit());
throw new TimeoutException("Timeout waiting for job to start.");
}
final JobExecutionDriver jobDriver = listener.getJobDriver();
// Stop the Gobblin instance driver when the job finishes.
Futures.addCallback(jobDriver, new FutureCallback<JobExecutionResult>() {
@Override
public void onSuccess(@Nullable JobExecutionResult result) {
stopGobblinInstanceDriver();
}
@Override
public void onFailure(Throwable t) {
stopGobblinInstanceDriver();
}
private void stopGobblinInstanceDriver() {
try {
driver.stopAsync();
driver.awaitTerminated(EmbeddedGobblin.this.shutdownTimeout.getTimeout(), EmbeddedGobblin.this.shutdownTimeout.getTimeUnit());
} catch (TimeoutException te) {
log.error("Failed to shutdown Gobblin instance driver.");
}
}
});
return listener.getJobDriver();
}
use of org.apache.gobblin.runtime.api.SpecNotFoundException in project incubator-gobblin by apache.
the class FSSpecStore method getSpec.
@Override
public Spec getSpec(URI specUri, String version) throws IOException, SpecNotFoundException {
Preconditions.checkArgument(null != specUri, "Spec URI should not be null");
Preconditions.checkArgument(null != version, "Version should not be null");
Path specPath = getPathForURI(this.fsSpecStoreDirPath, specUri, version);
if (!fs.exists(specPath)) {
throw new SpecNotFoundException(specUri);
}
return readSpecFromFile(specPath);
}
use of org.apache.gobblin.runtime.api.SpecNotFoundException in project incubator-gobblin by apache.
the class FSSpecStore method getSpec.
@Override
public Spec getSpec(URI specUri) throws SpecNotFoundException {
Preconditions.checkArgument(null != specUri, "Spec URI should not be null");
Collection<Spec> specs = getAllVersionsOfSpec(specUri);
Spec highestVersionSpec = null;
for (Spec spec : specs) {
if (null == highestVersionSpec) {
highestVersionSpec = spec;
} else if (null != spec.getVersion() && spec.getVersion().compareTo(spec.getVersion()) > 0) {
highestVersionSpec = spec;
}
}
if (null == highestVersionSpec) {
throw new SpecNotFoundException(specUri);
}
return highestVersionSpec;
}
use of org.apache.gobblin.runtime.api.SpecNotFoundException in project incubator-gobblin by apache.
the class SchedulerUtils method resolveTemplate.
private static Properties resolveTemplate(Properties jobProps) throws IOException {
try {
if (jobProps.containsKey(ConfigurationKeys.JOB_TEMPLATE_PATH)) {
Config jobConfig = ConfigUtils.propertiesToConfig(jobProps);
Properties resolvedProps = ConfigUtils.configToProperties((ResourceBasedJobTemplate.forResourcePath(jobProps.getProperty(ConfigurationKeys.JOB_TEMPLATE_PATH), new PackagedTemplatesJobCatalogDecorator())).getResolvedConfig(jobConfig));
return resolvedProps;
} else {
return jobProps;
}
} catch (JobTemplate.TemplateException | SpecNotFoundException | URISyntaxException exc) {
throw new IOException(exc);
}
}
Aggregations