Rename org.apache.slider.core.build to org.apache.slider.core.buildutils
This commit is contained in:
parent
f47df51791
commit
804bb82d1b
@ -115,8 +115,8 @@
|
|||||||
import org.apache.slider.common.tools.SliderFileSystem;
|
import org.apache.slider.common.tools.SliderFileSystem;
|
||||||
import org.apache.slider.common.tools.SliderUtils;
|
import org.apache.slider.common.tools.SliderUtils;
|
||||||
import org.apache.slider.common.tools.SliderVersionInfo;
|
import org.apache.slider.common.tools.SliderVersionInfo;
|
||||||
import org.apache.slider.core.build.InstanceBuilder;
|
import org.apache.slider.core.buildutils.InstanceBuilder;
|
||||||
import org.apache.slider.core.build.InstanceIO;
|
import org.apache.slider.core.buildutils.InstanceIO;
|
||||||
import org.apache.slider.core.conf.AggregateConf;
|
import org.apache.slider.core.conf.AggregateConf;
|
||||||
import org.apache.slider.core.conf.ConfTree;
|
import org.apache.slider.core.conf.ConfTree;
|
||||||
import org.apache.slider.core.conf.ConfTreeOperations;
|
import org.apache.slider.core.conf.ConfTreeOperations;
|
||||||
@ -151,7 +151,6 @@
|
|||||||
import org.apache.slider.core.registry.docstore.ConfigFormat;
|
import org.apache.slider.core.registry.docstore.ConfigFormat;
|
||||||
import org.apache.slider.core.registry.docstore.PublishedConfigSet;
|
import org.apache.slider.core.registry.docstore.PublishedConfigSet;
|
||||||
import org.apache.slider.core.registry.docstore.PublishedConfiguration;
|
import org.apache.slider.core.registry.docstore.PublishedConfiguration;
|
||||||
import org.apache.slider.core.registry.docstore.PublishedConfigurationOutputter;
|
|
||||||
import org.apache.slider.core.registry.docstore.PublishedExports;
|
import org.apache.slider.core.registry.docstore.PublishedExports;
|
||||||
import org.apache.slider.core.registry.docstore.PublishedExportsOutputter;
|
import org.apache.slider.core.registry.docstore.PublishedExportsOutputter;
|
||||||
import org.apache.slider.core.registry.docstore.PublishedExportsSet;
|
import org.apache.slider.core.registry.docstore.PublishedExportsSet;
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.slider.core.buildutils;
|
||||||
|
|
||||||
|
import org.apache.hadoop.util.VersionInfo;
|
||||||
|
import org.apache.slider.common.tools.SliderVersionInfo;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* classes to help with the build
|
||||||
|
*/
|
||||||
|
public class BuildHelper {
|
||||||
|
/**
|
||||||
|
* Add the cluster build information; this will include Hadoop details too
|
||||||
|
* @param dest map to insert this too
|
||||||
|
* @param prefix prefix for the build info
|
||||||
|
*/
|
||||||
|
public static void addBuildMetadata(Map<String, Object> dest, String prefix) {
|
||||||
|
|
||||||
|
Properties props = SliderVersionInfo.loadVersionProperties();
|
||||||
|
dest.put(prefix + "." + SliderVersionInfo.APP_BUILD_INFO,
|
||||||
|
props.getProperty(
|
||||||
|
SliderVersionInfo.APP_BUILD_INFO));
|
||||||
|
dest.put(prefix + "." + SliderVersionInfo.HADOOP_BUILD_INFO,
|
||||||
|
props.getProperty(SliderVersionInfo.HADOOP_BUILD_INFO));
|
||||||
|
|
||||||
|
dest.put(prefix + "." + SliderVersionInfo.HADOOP_DEPLOYED_INFO,
|
||||||
|
VersionInfo.getBranch() + " @" + VersionInfo.getSrcChecksum());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,312 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.slider.core.buildutils;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||||
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.apache.hadoop.fs.permission.FsPermission;
|
||||||
|
import org.apache.slider.api.InternalKeys;
|
||||||
|
import org.apache.slider.api.OptionKeys;
|
||||||
|
import org.apache.slider.api.StatusKeys;
|
||||||
|
import org.apache.slider.common.SliderXmlConfKeys;
|
||||||
|
import org.apache.slider.common.tools.CoreFileSystem;
|
||||||
|
import org.apache.slider.common.tools.SliderUtils;
|
||||||
|
import org.apache.slider.core.conf.AggregateConf;
|
||||||
|
import org.apache.slider.core.conf.ConfTreeOperations;
|
||||||
|
import org.apache.slider.core.conf.MapOperations;
|
||||||
|
import org.apache.slider.core.exceptions.BadClusterStateException;
|
||||||
|
import org.apache.slider.core.exceptions.BadConfigException;
|
||||||
|
import org.apache.slider.core.exceptions.ErrorStrings;
|
||||||
|
import org.apache.slider.core.exceptions.SliderException;
|
||||||
|
import org.apache.slider.core.persist.ConfPersister;
|
||||||
|
import org.apache.slider.core.persist.InstancePaths;
|
||||||
|
import org.apache.slider.core.persist.LockAcquireFailedException;
|
||||||
|
import org.apache.slider.core.persist.LockHeldAction;
|
||||||
|
import org.apache.slider.core.zk.ZKPathBuilder;
|
||||||
|
import org.apache.slider.core.zk.ZookeeperUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.apache.slider.api.InternalKeys.INTERNAL_ADDONS_DIR_PATH;
|
||||||
|
import static org.apache.slider.api.InternalKeys.INTERNAL_APPDEF_DIR_PATH;
|
||||||
|
import static org.apache.slider.api.InternalKeys.INTERNAL_QUEUE;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_AM_TMP_DIR;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_TMP_DIR;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_HOME;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_IMAGE_PATH;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_DATA_DIR_PATH;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_GENERATED_CONF_PATH;
|
||||||
|
import static org.apache.slider.api.OptionKeys.INTERNAL_SNAPSHOT_CONF_PATH;
|
||||||
|
import static org.apache.slider.api.OptionKeys.ZOOKEEPER_HOSTS;
|
||||||
|
import static org.apache.slider.api.OptionKeys.ZOOKEEPER_PATH;
|
||||||
|
import static org.apache.slider.api.OptionKeys.ZOOKEEPER_QUORUM;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build up the instance of a cluster.
|
||||||
|
*/
|
||||||
|
public class InstanceBuilder {
|
||||||
|
|
||||||
|
private final String clustername;
|
||||||
|
private final Configuration conf;
|
||||||
|
private final CoreFileSystem coreFS;
|
||||||
|
private final InstancePaths instancePaths;
|
||||||
|
private AggregateConf instanceDescription;
|
||||||
|
|
||||||
|
private static final Logger log =
|
||||||
|
LoggerFactory.getLogger(InstanceBuilder.class);
|
||||||
|
|
||||||
|
public InstanceBuilder(CoreFileSystem coreFileSystem,
|
||||||
|
Configuration conf,
|
||||||
|
String clustername) {
|
||||||
|
this.clustername = clustername;
|
||||||
|
this.conf = conf;
|
||||||
|
this.coreFS = coreFileSystem;
|
||||||
|
Path instanceDir = coreFileSystem.buildClusterDirPath(clustername);
|
||||||
|
instancePaths = new InstancePaths(instanceDir);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public AggregateConf getInstanceDescription() {
|
||||||
|
return instanceDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InstancePaths getInstancePaths() {
|
||||||
|
return instancePaths;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Builder working with " + clustername + " at " +
|
||||||
|
getInstanceDir();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Path getInstanceDir() {
|
||||||
|
return instancePaths.instanceDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initial part of the build process
|
||||||
|
* @param instanceConf
|
||||||
|
* @param provider
|
||||||
|
*/
|
||||||
|
public void init(
|
||||||
|
String provider,
|
||||||
|
AggregateConf instanceConf) {
|
||||||
|
|
||||||
|
|
||||||
|
this.instanceDescription = instanceConf;
|
||||||
|
|
||||||
|
//internal is extended
|
||||||
|
ConfTreeOperations internalOps = instanceConf.getInternalOperations();
|
||||||
|
|
||||||
|
Map<String, Object> md = internalOps.getConfTree().metadata;
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
md.put(StatusKeys.INFO_CREATE_TIME_HUMAN, SliderUtils.toGMTString(time));
|
||||||
|
md.put(StatusKeys.INFO_CREATE_TIME_MILLIS, Long.toString(time));
|
||||||
|
|
||||||
|
MapOperations globalOptions = internalOps.getGlobalOptions();
|
||||||
|
BuildHelper.addBuildMetadata(md, "create");
|
||||||
|
SliderUtils.setInfoTime(md,
|
||||||
|
StatusKeys.INFO_CREATE_TIME_HUMAN,
|
||||||
|
StatusKeys.INFO_CREATE_TIME_MILLIS,
|
||||||
|
System.currentTimeMillis());
|
||||||
|
|
||||||
|
internalOps.set(INTERNAL_AM_TMP_DIR,
|
||||||
|
instancePaths.tmpPathAM.toUri());
|
||||||
|
internalOps.set(INTERNAL_TMP_DIR,
|
||||||
|
instancePaths.tmpPath.toUri());
|
||||||
|
internalOps.set(INTERNAL_SNAPSHOT_CONF_PATH,
|
||||||
|
instancePaths.snapshotConfPath.toUri());
|
||||||
|
internalOps.set(INTERNAL_GENERATED_CONF_PATH,
|
||||||
|
instancePaths.generatedConfPath.toUri());
|
||||||
|
internalOps.set(INTERNAL_DATA_DIR_PATH,
|
||||||
|
instancePaths.dataPath.toUri());
|
||||||
|
internalOps.set(INTERNAL_APPDEF_DIR_PATH,
|
||||||
|
instancePaths.appDefPath.toUri());
|
||||||
|
internalOps.set(INTERNAL_ADDONS_DIR_PATH,
|
||||||
|
instancePaths.addonsPath.toUri());
|
||||||
|
|
||||||
|
|
||||||
|
internalOps.set(InternalKeys.INTERNAL_PROVIDER_NAME, provider);
|
||||||
|
internalOps.set(OptionKeys.APPLICATION_NAME, clustername);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the queue used to start the application
|
||||||
|
* @param queue
|
||||||
|
* @throws BadConfigException
|
||||||
|
*/
|
||||||
|
public void setQueue(String queue) throws BadConfigException {
|
||||||
|
if(queue != null) {
|
||||||
|
if(SliderUtils.isUnset(queue)) {
|
||||||
|
throw new BadConfigException("Queue value cannot be empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
instanceDescription.getInternalOperations().set(INTERNAL_QUEUE, queue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up the image/app home path
|
||||||
|
* @param appImage path in the DFS to the tar file
|
||||||
|
* @param appHomeDir other strategy: home dir
|
||||||
|
* @throws BadConfigException if both are found
|
||||||
|
*/
|
||||||
|
public void setImageDetailsIfAvailable(
|
||||||
|
Path appImage,
|
||||||
|
String appHomeDir) throws BadConfigException {
|
||||||
|
boolean appHomeUnset = SliderUtils.isUnset(appHomeDir);
|
||||||
|
// App home or image
|
||||||
|
if (appImage != null) {
|
||||||
|
if (!appHomeUnset) {
|
||||||
|
// both args have been set
|
||||||
|
throw new BadConfigException(
|
||||||
|
ErrorStrings.E_BOTH_IMAGE_AND_HOME_DIR_SPECIFIED);
|
||||||
|
}
|
||||||
|
instanceDescription.getInternalOperations().set(INTERNAL_APPLICATION_IMAGE_PATH,
|
||||||
|
appImage.toUri());
|
||||||
|
} else {
|
||||||
|
// the alternative is app home, which now MUST be set
|
||||||
|
if (!appHomeUnset) {
|
||||||
|
instanceDescription.getInternalOperations().set(INTERNAL_APPLICATION_HOME,
|
||||||
|
appHomeDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Propagate any critical principals from the current site config down to the HBase one.
|
||||||
|
*/
|
||||||
|
public void propagatePrincipals() {
|
||||||
|
String dfsPrincipal = conf.get(SliderXmlConfKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
|
||||||
|
if (dfsPrincipal != null) {
|
||||||
|
String siteDfsPrincipal = OptionKeys.SITE_XML_PREFIX +
|
||||||
|
SliderXmlConfKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY;
|
||||||
|
instanceDescription.getAppConfOperations().set(siteDfsPrincipal, dfsPrincipal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void propagateFilename() {
|
||||||
|
String fsDefaultName = conf.get(
|
||||||
|
CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY);
|
||||||
|
instanceDescription.getAppConfOperations().set(OptionKeys.SITE_XML_PREFIX +
|
||||||
|
CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
|
||||||
|
fsDefaultName
|
||||||
|
);
|
||||||
|
|
||||||
|
instanceDescription.getAppConfOperations().set(OptionKeys.SITE_XML_PREFIX +
|
||||||
|
SliderXmlConfKeys.FS_DEFAULT_NAME_CLASSIC,
|
||||||
|
fsDefaultName
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void takeSnapshotOfConfDir(Path appconfdir) throws
|
||||||
|
IOException,
|
||||||
|
BadConfigException,
|
||||||
|
BadClusterStateException {
|
||||||
|
FileSystem srcFS = FileSystem.get(appconfdir.toUri(), conf);
|
||||||
|
if (!srcFS.isDirectory(appconfdir)) {
|
||||||
|
throw new BadConfigException(
|
||||||
|
"Source Configuration directory is not valid: %s",
|
||||||
|
appconfdir.toString());
|
||||||
|
}
|
||||||
|
// bulk copy
|
||||||
|
FsPermission clusterPerms = coreFS.getInstanceDirectoryPermissions();
|
||||||
|
// first the original from wherever to the DFS
|
||||||
|
SliderUtils.copyDirectory(conf, appconfdir, instancePaths.snapshotConfPath,
|
||||||
|
clusterPerms);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Persist this
|
||||||
|
* @param appconfdir conf dir
|
||||||
|
* @param overwrite if true, we don't need to create cluster dir
|
||||||
|
* @throws IOException
|
||||||
|
* @throws SliderException
|
||||||
|
* @throws LockAcquireFailedException
|
||||||
|
*/
|
||||||
|
public void persist(Path appconfdir, boolean overwrite) throws
|
||||||
|
IOException,
|
||||||
|
SliderException,
|
||||||
|
LockAcquireFailedException {
|
||||||
|
if (!overwrite) {
|
||||||
|
coreFS.createClusterDirectories(instancePaths);
|
||||||
|
}
|
||||||
|
ConfPersister persister =
|
||||||
|
new ConfPersister(coreFS, getInstanceDir());
|
||||||
|
ConfDirSnapshotAction action = null;
|
||||||
|
if (appconfdir != null) {
|
||||||
|
action = new ConfDirSnapshotAction(appconfdir);
|
||||||
|
}
|
||||||
|
persister.save(instanceDescription, action);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the ZK paths to the application options.
|
||||||
|
*
|
||||||
|
* @param zkBinding ZK binding
|
||||||
|
*/
|
||||||
|
public void addZKBinding(ZKPathBuilder zkBinding) throws BadConfigException {
|
||||||
|
|
||||||
|
String quorum = zkBinding.getAppQuorum();
|
||||||
|
if (SliderUtils.isSet(quorum)) {
|
||||||
|
MapOperations globalAppOptions =
|
||||||
|
instanceDescription.getAppConfOperations().getGlobalOptions();
|
||||||
|
globalAppOptions.put(ZOOKEEPER_PATH, zkBinding.getAppPath());
|
||||||
|
globalAppOptions.put(ZOOKEEPER_QUORUM, quorum);
|
||||||
|
globalAppOptions.put(ZOOKEEPER_HOSTS,
|
||||||
|
ZookeeperUtils.convertToHostsOnlyList(quorum));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to execute the snapshotting of the configuration directory
|
||||||
|
* while the persistence lock is held.
|
||||||
|
*
|
||||||
|
* This guarantees that there won't be an attempt to launch a cluster
|
||||||
|
* until the snapshot is complete -as the write lock won't be released
|
||||||
|
* until afterwards.
|
||||||
|
*/
|
||||||
|
private class ConfDirSnapshotAction implements LockHeldAction {
|
||||||
|
|
||||||
|
private final Path appconfdir;
|
||||||
|
|
||||||
|
private ConfDirSnapshotAction(Path appconfdir) {
|
||||||
|
this.appconfdir = appconfdir;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() throws IOException, SliderException {
|
||||||
|
|
||||||
|
takeSnapshotOfConfDir(appconfdir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.slider.core.buildutils;
|
||||||
|
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.apache.slider.common.tools.CoreFileSystem;
|
||||||
|
import org.apache.slider.core.conf.AggregateConf;
|
||||||
|
import org.apache.slider.core.exceptions.BadClusterStateException;
|
||||||
|
import org.apache.slider.core.exceptions.SliderException;
|
||||||
|
import org.apache.slider.core.persist.ConfPersister;
|
||||||
|
import org.apache.slider.core.persist.LockAcquireFailedException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class InstanceIO {
|
||||||
|
protected static final Logger log =
|
||||||
|
LoggerFactory.getLogger(InstanceIO.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load in an instance definition -but do not resolve it
|
||||||
|
* @param sliderFileSystem filesystem
|
||||||
|
* @param clusterDirectory CD
|
||||||
|
* @return the unresolved aggregate configuration
|
||||||
|
* @throws IOException
|
||||||
|
* @throws SliderException
|
||||||
|
* @throws BadClusterStateException if a lock could not be acquired
|
||||||
|
*/
|
||||||
|
public static AggregateConf loadInstanceDefinitionUnresolved(
|
||||||
|
CoreFileSystem sliderFileSystem,
|
||||||
|
Path clusterDirectory)
|
||||||
|
throws IOException, SliderException {
|
||||||
|
AggregateConf instanceDefinition = new AggregateConf();
|
||||||
|
ConfPersister persister =
|
||||||
|
new ConfPersister(sliderFileSystem, clusterDirectory);
|
||||||
|
try {
|
||||||
|
persister.load(instanceDefinition);
|
||||||
|
} catch (LockAcquireFailedException e) {
|
||||||
|
log.debug("Lock acquisition failure of {}", clusterDirectory, e);
|
||||||
|
|
||||||
|
throw new BadClusterStateException(
|
||||||
|
"Application at %s is locked for reading",
|
||||||
|
clusterDirectory.toString());
|
||||||
|
}
|
||||||
|
return instanceDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a persisted instance definition
|
||||||
|
* @param coreFS filesystem
|
||||||
|
* @param dir directory to load from
|
||||||
|
* @param instanceDefinition instance definition to save do
|
||||||
|
* @throws SliderException
|
||||||
|
* @throws IOException
|
||||||
|
* @throws LockAcquireFailedException
|
||||||
|
*/
|
||||||
|
public static void saveInstanceDefinition(CoreFileSystem coreFS,
|
||||||
|
Path dir,
|
||||||
|
AggregateConf instanceDefinition)
|
||||||
|
throws SliderException, IOException, LockAcquireFailedException {
|
||||||
|
ConfPersister persister =
|
||||||
|
new ConfPersister(coreFS, dir);
|
||||||
|
persister.save(instanceDefinition, null);
|
||||||
|
}
|
||||||
|
}
|
@ -20,9 +20,6 @@
|
|||||||
|
|
||||||
import com.codahale.metrics.MetricRegistry;
|
import com.codahale.metrics.MetricRegistry;
|
||||||
import com.codahale.metrics.health.HealthCheckRegistry;
|
import com.codahale.metrics.health.HealthCheckRegistry;
|
||||||
import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
|
|
||||||
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
|
|
||||||
import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.protobuf.BlockingService;
|
import com.google.protobuf.BlockingService;
|
||||||
|
|
||||||
@ -103,7 +100,7 @@
|
|||||||
import org.apache.slider.common.tools.SliderFileSystem;
|
import org.apache.slider.common.tools.SliderFileSystem;
|
||||||
import org.apache.slider.common.tools.SliderUtils;
|
import org.apache.slider.common.tools.SliderUtils;
|
||||||
import org.apache.slider.common.tools.SliderVersionInfo;
|
import org.apache.slider.common.tools.SliderVersionInfo;
|
||||||
import org.apache.slider.core.build.InstanceIO;
|
import org.apache.slider.core.buildutils.InstanceIO;
|
||||||
import org.apache.slider.core.conf.AggregateConf;
|
import org.apache.slider.core.conf.AggregateConf;
|
||||||
import org.apache.slider.core.conf.ConfTree;
|
import org.apache.slider.core.conf.ConfTree;
|
||||||
import org.apache.slider.core.conf.ConfTreeOperations;
|
import org.apache.slider.core.conf.ConfTreeOperations;
|
||||||
|
Loading…
Reference in New Issue
Block a user