http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java deleted file mode 100644 index bf71861..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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.restclient; - -import com.google.common.base.Preconditions; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.UniformInterfaceException; -import com.sun.jersey.api.client.config.ClientConfig; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.api.json.JSONConfiguration; -import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory; -import com.sun.jersey.client.urlconnection.URLConnectionClientHandler; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.security.authentication.client.AuthenticationException; -import org.apache.slider.core.exceptions.ExceptionConverter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * Class to bond to a Jersey client, for UGI integration and SPNEGO. - * <p> - * Usage: create an instance, then when creating a Jersey <code>Client</code> - * pass in to the constructor the handler provided by {@link #getHandler()} - * - * see <a href="https://jersey.java.net/apidocs/1.17/jersey/com/sun/jersey/client/urlconnection/HttpURLConnectionFactory.html">Jersey docs</a> - */ -public class UgiJerseyBinding implements - HttpURLConnectionFactory { - private static final Logger log = - LoggerFactory.getLogger(UgiJerseyBinding.class); - - private final UrlConnectionOperations operations; - private final URLConnectionClientHandler handler; - - /** - * Construct an instance - * @param operations operations instance - */ - @SuppressWarnings("ThisEscapedInObjectConstruction") - public UgiJerseyBinding(UrlConnectionOperations operations) { - Preconditions.checkArgument(operations != null, "Null operations"); - this.operations = operations; - handler = new URLConnectionClientHandler(this); - } - - /** - * Create an instance off the configuration. The SPNEGO policy - * is derived from the current UGI settings. - * @param conf config - */ - public UgiJerseyBinding(Configuration conf) { - this(new UrlConnectionOperations(conf)); - } - - /** - * Get a URL connection. - * @param url URL to connect to - * @return the connection - * @throws IOException any problem. {@link AuthenticationException} - * errors are wrapped - */ - @Override - public HttpURLConnection getHttpURLConnection(URL url) throws IOException { - try { - // open a connection handling status codes and so redirections - // but as it opens a connection, it's less useful than you think. - - return operations.openConnection(url); - } catch (AuthenticationException e) { - throw new IOException(e); - } - } - - public UrlConnectionOperations getOperations() { - return operations; - } - - public URLConnectionClientHandler getHandler() { - return handler; - } - - /** - * Get the SPNEGO flag (as found in the operations instance - * @return the spnego policy - */ - public boolean isUseSpnego() { - return operations.isUseSpnego(); - } - - - /** - * Uprate error codes 400 and up into faults; - * <p> - * see {@link ExceptionConverter#convertJerseyException(String, String, UniformInterfaceException)} - */ - public static IOException uprateFaults(HttpVerb verb, String url, - UniformInterfaceException ex) - throws IOException { - return ExceptionConverter.convertJerseyException(verb.getVerb(), - url, ex); - } - - /** - * Create the standard Jersey client Config - * @return the recommended Jersey Client config - */ - public ClientConfig createJerseyClientConfig() { - ClientConfig clientConfig = new DefaultClientConfig(); - clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true); - return clientConfig; - } - - /** - * Create a jersey client bonded to this handler, using the - * supplied client config - * @param clientConfig client configuratin - * @return a new client instance to use - */ - public Client createJerseyClient(ClientConfig clientConfig) { - return new Client(getHandler(), clientConfig); - } - - /** - * Create a jersey client bonded to this handler, using the - * client config created with {@link #createJerseyClientConfig()} - * @return a new client instance to use - */ - public Client createJerseyClient() { - return createJerseyClient(createJerseyClientConfig()); - } - -} - -
http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UrlConnectionOperations.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UrlConnectionOperations.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UrlConnectionOperations.java deleted file mode 100644 index 46f0d02..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/restclient/UrlConnectionOperations.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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.restclient; - -import com.google.common.base.Preconditions; -import org.apache.commons.io.IOUtils; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.conf.Configured; -import org.apache.hadoop.net.NetUtils; -import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hadoop.security.authentication.client.AuthenticationException; -import org.apache.hadoop.yarn.webapp.ForbiddenException; -import org.apache.hadoop.yarn.webapp.NotFoundException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.SSLException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * Operations on the JDK UrlConnection class. - * - */ -public class UrlConnectionOperations extends Configured { - private static final Logger log = - LoggerFactory.getLogger(UrlConnectionOperations.class); - - private SliderURLConnectionFactory connectionFactory; - - private boolean useSpnego = false; - - /** - * Create an instance off the configuration. The SPNEGO policy - * is derived from the current UGI settings. - * @param conf config - */ - public UrlConnectionOperations(Configuration conf) { - super(conf); - connectionFactory = SliderURLConnectionFactory.newInstance(conf); - if (UserGroupInformation.isSecurityEnabled()) { - log.debug("SPNEGO is enabled"); - setUseSpnego(true); - } - } - - - public boolean isUseSpnego() { - return useSpnego; - } - - public void setUseSpnego(boolean useSpnego) { - this.useSpnego = useSpnego; - } - - /** - * Opens a url with cache disabled, redirect handled in - * (JDK) implementation. - * - * @param url to open - * @return URLConnection - * @throws IOException - * @throws AuthenticationException authentication failure - */ - public HttpURLConnection openConnection(URL url) throws - IOException, - AuthenticationException { - Preconditions.checkArgument(url.getPort() != 0, "no port"); - return (HttpURLConnection) connectionFactory.openConnection(url, useSpnego); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/BlockingZKWatcher.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/BlockingZKWatcher.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/BlockingZKWatcher.java deleted file mode 100644 index ca49888..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/BlockingZKWatcher.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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.zk; - -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.ConnectException; -import java.util.concurrent.atomic.AtomicBoolean; - -public class BlockingZKWatcher implements Watcher { - - protected static final Logger log = - LoggerFactory.getLogger(BlockingZKWatcher.class); - private final AtomicBoolean connectedFlag = new AtomicBoolean(false); - - @Override - public void process(WatchedEvent event) { - log.info("ZK binding callback received"); - connectedFlag.set(true); - synchronized (connectedFlag) { - try { - connectedFlag.notify(); - } catch (Exception e) { - log.warn("failed while waiting for notification", e); - } - } - } - - /** - * Wait for a flag to go true - * @param timeout timeout in millis - */ - - public void waitForZKConnection(int timeout) - throws InterruptedException, ConnectException { - synchronized (connectedFlag) { - if (!connectedFlag.get()) { - log.info("waiting for ZK event"); - //wait a bit - connectedFlag.wait(timeout); - } - } - if (!connectedFlag.get()) { - throw new ConnectException("Unable to connect to ZK quorum"); - } - } - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/MiniZooKeeperCluster.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/MiniZooKeeperCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/MiniZooKeeperCluster.java deleted file mode 100644 index 1af883e..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/MiniZooKeeperCluster.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * 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.zk; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileUtil; -import org.apache.hadoop.io.IOUtils; -import org.apache.hadoop.service.AbstractService; -import org.apache.zookeeper.server.NIOServerCnxnFactory; -import org.apache.zookeeper.server.ZooKeeperServer; -import org.apache.zookeeper.server.persistence.FileTxnLog; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.Reader; -import java.net.BindException; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - - -/** - * This is a version of the HBase ZK cluster cut out to be standalone. - * - * <i>Important: keep this Java6 language level for now</i> - */ -public class MiniZooKeeperCluster extends AbstractService { - private static final Logger LOG = LoggerFactory.getLogger( - MiniZooKeeperCluster.class); - - private static final int TICK_TIME = 2000; - private static final int CONNECTION_TIMEOUT = 30000; - public static final int MAX_CLIENT_CONNECTIONS = 1000; - - private boolean started; - - /** The default port. If zero, we use a random port. */ - private int defaultClientPort = 0; - - private int clientPort; - - private final List<NIOServerCnxnFactory> standaloneServerFactoryList; - private final List<ZooKeeperServer> zooKeeperServers; - private final List<Integer> clientPortList; - - private int activeZKServerIndex; - private int tickTime = 0; - private File baseDir; - private final int numZooKeeperServers; - private String zkQuorum = ""; - - public MiniZooKeeperCluster(int numZooKeeperServers) { - super("MiniZooKeeperCluster"); - this.numZooKeeperServers = numZooKeeperServers; - this.started = false; - activeZKServerIndex = -1; - zooKeeperServers = new ArrayList<ZooKeeperServer>(); - clientPortList = new ArrayList<Integer>(); - standaloneServerFactoryList = new ArrayList<NIOServerCnxnFactory>(); - } - - - @Override - protected void serviceInit(Configuration conf) throws Exception { - super.serviceInit(conf); - } - - public void setDefaultClientPort(int clientPort) { - if (clientPort <= 0) { - throw new IllegalArgumentException("Invalid default ZK client port: " - + clientPort); - } - this.defaultClientPort = clientPort; - } - - /** - * Selects a ZK client port. Returns the default port if specified. - * Otherwise, returns a random port. The random port is selected from the - * range between 49152 to 65535. These ports cannot be registered with IANA - * and are intended for dynamic allocation (see http://bit.ly/dynports). - */ - private int selectClientPort(Random r) { - if (defaultClientPort > 0) { - return defaultClientPort; - } - return 0xc000 + r.nextInt(0x3f00); - } - - public void setTickTime(int tickTime) { - this.tickTime = tickTime; - } - - public int getBackupZooKeeperServerNum() { - return zooKeeperServers.size() - 1; - } - - public int getZooKeeperServerNum() { - return zooKeeperServers.size(); - } - - // / XXX: From o.a.zk.t.ClientBase - private static void setupTestEnv() { - // during the tests we run with 100K prealloc in the logs. - // on windows systems prealloc of 64M was seen to take ~15seconds - // resulting in test failure (client timeout on first session). - // set env and directly in order to handle static init/gc issues - System.setProperty("zookeeper.preAllocSize", "100"); - FileTxnLog.setPreallocSize(100 * 1024); - } - - @Override - protected void serviceStart() throws Exception { - startup(); - } - - /** - * @return ClientPort server bound to, -1 if there was a - * binding problem and we couldn't pick another port. - * @throws IOException - * @throws InterruptedException - */ - private int startup() throws IOException, - InterruptedException { - if (numZooKeeperServers <= 0) - return -1; - - setupTestEnv(); - started = true; - baseDir = File.createTempFile("zookeeper", ".dir"); - recreateDir(baseDir); - - StringBuilder quorumList = new StringBuilder(); - Random rnd = new Random(); - int tentativePort = selectClientPort(rnd); - - // running all the ZK servers - for (int i = 0; i < numZooKeeperServers; i++) { - File dir = new File(baseDir, "zookeeper_" + i).getAbsoluteFile(); - recreateDir(dir); - int tickTimeToUse; - if (this.tickTime > 0) { - tickTimeToUse = this.tickTime; - } else { - tickTimeToUse = TICK_TIME; - } - ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse); - NIOServerCnxnFactory standaloneServerFactory; - while (true) { - try { - standaloneServerFactory = new NIOServerCnxnFactory(); - standaloneServerFactory.configure( - new InetSocketAddress(tentativePort), - MAX_CLIENT_CONNECTIONS - ); - } catch (BindException e) { - LOG.debug("Failed binding ZK Server to client port: " + - tentativePort, e); - // We're told to use some port but it's occupied, fail - if (defaultClientPort > 0) return -1; - // This port is already in use, try to use another. - tentativePort = selectClientPort(rnd); - continue; - } - break; - } - - // Start up this ZK server - standaloneServerFactory.startup(server); - if (!waitForServerUp(tentativePort, CONNECTION_TIMEOUT)) { - throw new IOException("Waiting for startup of standalone server"); - } - - // We have selected this port as a client port. - clientPortList.add(tentativePort); - standaloneServerFactoryList.add(standaloneServerFactory); - zooKeeperServers.add(server); - if (quorumList.length() > 0) { - quorumList.append(","); - } - quorumList.append("localhost:").append(tentativePort); - tentativePort++; //for the next server - } - - // set the first one to be active ZK; Others are backups - activeZKServerIndex = 0; - - clientPort = clientPortList.get(activeZKServerIndex); - zkQuorum = quorumList.toString(); - LOG.info("Started MiniZK Cluster and connect 1 ZK server " + - "on client port: " + clientPort); - return clientPort; - } - - private void recreateDir(File dir) throws IOException { - if (dir.exists()) { - if (!FileUtil.fullyDelete(dir)) { - throw new IOException("Could not delete zk base directory: " + dir); - } - } - try { - dir.mkdirs(); - } catch (SecurityException e) { - throw new IOException("creating dir: " + dir, e); - } - } - - @Override - protected void serviceStop() throws Exception { - - if (!started) { - return; - } - started = false; - - try { - // shut down all the zk servers - for (int i = 0; i < standaloneServerFactoryList.size(); i++) { - NIOServerCnxnFactory standaloneServerFactory = - standaloneServerFactoryList.get(i); - int clientPort = clientPortList.get(i); - - standaloneServerFactory.shutdown(); - if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { - throw new IOException("Waiting for shutdown of standalone server"); - } - } - for (ZooKeeperServer zkServer : zooKeeperServers) { - //explicitly close ZKDatabase since ZookeeperServer does not close them - zkServer.getZKDatabase().close(); - } - } finally { - // clear everything - activeZKServerIndex = 0; - standaloneServerFactoryList.clear(); - clientPortList.clear(); - zooKeeperServers.clear(); - } - - LOG.info("Shutdown MiniZK cluster with all ZK servers"); - } - - /**@return clientPort return clientPort if there is another ZK backup can run - * when killing the current active; return -1, if there is no backups. - * @throws IOException - * @throws InterruptedException - */ - public int killCurrentActiveZooKeeperServer() throws IOException, - InterruptedException { - if (!started || activeZKServerIndex < 0) { - return -1; - } - - // Shutdown the current active one - NIOServerCnxnFactory standaloneServerFactory = - standaloneServerFactoryList.get(activeZKServerIndex); - int clientPort = clientPortList.get(activeZKServerIndex); - - standaloneServerFactory.shutdown(); - if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { - throw new IOException("Waiting for shutdown of standalone server"); - } - - zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close(); - - // remove the current active zk server - standaloneServerFactoryList.remove(activeZKServerIndex); - clientPortList.remove(activeZKServerIndex); - zooKeeperServers.remove(activeZKServerIndex); - LOG.info("Kill the current active ZK servers in the cluster " + - "on client port: " + clientPort); - - if (standaloneServerFactoryList.size() == 0) { - // there is no backup servers; - return -1; - } - clientPort = clientPortList.get(activeZKServerIndex); - LOG.info("Activate a backup zk server in the cluster " + - "on client port: " + clientPort); - // return the next back zk server's port - return clientPort; - } - - /** - * Kill one back up ZK servers - * @throws IOException - * @throws InterruptedException - */ - public void killOneBackupZooKeeperServer() throws IOException, - InterruptedException { - if (!started || activeZKServerIndex < 0 || - standaloneServerFactoryList.size() <= 1) { - return; - } - - int backupZKServerIndex = activeZKServerIndex + 1; - // Shutdown the current active one - NIOServerCnxnFactory standaloneServerFactory = - standaloneServerFactoryList.get(backupZKServerIndex); - int clientPort = clientPortList.get(backupZKServerIndex); - - standaloneServerFactory.shutdown(); - if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { - throw new IOException("Waiting for shutdown of standalone server"); - } - - zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close(); - - // remove this backup zk server - standaloneServerFactoryList.remove(backupZKServerIndex); - clientPortList.remove(backupZKServerIndex); - zooKeeperServers.remove(backupZKServerIndex); - LOG.info("Kill one backup ZK servers in the cluster " + - "on client port: " + clientPort); - } - - // XXX: From o.a.zk.t.ClientBase - private static boolean waitForServerDown(int port, long timeout) throws - InterruptedException { - long start = System.currentTimeMillis(); - while (true) { - try { - Socket sock = null; - try { - sock = new Socket("localhost", port); - OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes("UTF-8")); - outstream.flush(); - } finally { - IOUtils.closeSocket(sock); - } - } catch (IOException e) { - return true; - } - - if (System.currentTimeMillis() > start + timeout) { - break; - } - Thread.sleep(250); - } - return false; - } - - // XXX: From o.a.zk.t.ClientBase - private static boolean waitForServerUp(int port, long timeout) throws - InterruptedException { - long start = System.currentTimeMillis(); - while (true) { - try { - Socket sock = null; - sock = new Socket("localhost", port); - BufferedReader reader = null; - try { - OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes("UTF-8")); - outstream.flush(); - - Reader isr = new InputStreamReader(sock.getInputStream(), "UTF-8"); - reader = new BufferedReader(isr); - String line = reader.readLine(); - if (line != null && line.startsWith("Zookeeper version:")) { - return true; - } - } finally { - IOUtils.closeSocket(sock); - IOUtils.closeStream(reader); - } - } catch (IOException e) { - // ignore as this is expected - LOG.debug("server localhost:" + port + " not up " + e); - } - - if (System.currentTimeMillis() > start + timeout) { - break; - } - Thread.sleep(250); - } - return false; - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKCallback.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKCallback.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKCallback.java deleted file mode 100644 index 045b72c..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKCallback.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.zk; - -import org.apache.zookeeper.Watcher; - -/** - * Relays ZK watcher events to a closure - */ -public abstract class ZKCallback implements Watcher { - - public ZKCallback() { - } - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java deleted file mode 100644 index 519cd16..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * 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.zk; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZooDefs; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.data.ACL; -import org.apache.zookeeper.data.Stat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.Closeable; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; - - -public class ZKIntegration implements Watcher, Closeable { - -/** - * Base path for services - */ - public static final String ZK_SERVICES = "services"; - /** - * Base path for all Slider references - */ - public static final String ZK_SLIDER = "slider"; - public static final String ZK_USERS = "users"; - public static final String SVC_SLIDER = "/" + ZK_SERVICES + "/" + ZK_SLIDER; - public static final String SVC_SLIDER_USERS = SVC_SLIDER + "/" + ZK_USERS; - - private static final List<String> ZK_USERS_PATH_LIST = new ArrayList<String>(); - static { - ZK_USERS_PATH_LIST.add(ZK_SERVICES); - ZK_USERS_PATH_LIST.add(ZK_SLIDER); - ZK_USERS_PATH_LIST.add(ZK_USERS); - } - - public static final int SESSION_TIMEOUT = 30000; - protected static final Logger log = - LoggerFactory.getLogger(ZKIntegration.class); - private ZooKeeper zookeeper; - private final String username; - private final String clustername; - private final String userPath; - private int sessionTimeout = SESSION_TIMEOUT; - private static final Map<String, ZooKeeper> ZK_SESSIONS = new HashMap<>(); - -/** - flag to set to indicate that the user path should be created if - it is not already there - */ - private final AtomicBoolean toInit = new AtomicBoolean(false); - private final boolean createClusterPath; - private final Watcher watchEventHandler; - private final String zkConnection; - private final boolean canBeReadOnly; - - protected ZKIntegration(String zkConnection, - String username, - String clustername, - boolean canBeReadOnly, - boolean createClusterPath, - Watcher watchEventHandler, - int sessionTimeout - ) throws IOException { - this.username = username; - this.clustername = clustername; - this.watchEventHandler = watchEventHandler; - this.zkConnection = zkConnection; - this.canBeReadOnly = canBeReadOnly; - this.createClusterPath = createClusterPath; - this.sessionTimeout = sessionTimeout; - this.userPath = mkSliderUserPath(username); - } - - /** - * Returns true only if an active ZK session is available and retrieved from - * cache, false when it has to create a new one. - * - * @return true if from cache, false when new session created - * @throws IOException - */ - public synchronized boolean init() throws IOException { - if (zookeeper != null && getAlive()) { - return true; - } - - synchronized (ZK_SESSIONS) { - if (ZK_SESSIONS.containsKey(zkConnection)) { - zookeeper = ZK_SESSIONS.get(zkConnection); - } - if (zookeeper == null || !getAlive()) { - log.info("Binding ZK client to {}", zkConnection); - zookeeper = new ZooKeeper(zkConnection, sessionTimeout, this, - canBeReadOnly); - ZK_SESSIONS.put(zkConnection, zookeeper); - return false; - } else { - return true; - } - } - } - - /** - * Create an instance bonded to the specific closure - * @param zkConnection - * @param username - * @param clustername - * @param canBeReadOnly - * @param watchEventHandler - * @return the new instance - * @throws IOException - */ - public static ZKIntegration newInstance(String zkConnection, - String username, - String clustername, - boolean createClusterPath, - boolean canBeReadOnly, - Watcher watchEventHandler, - int sessionTimeout) throws IOException { - - return new ZKIntegration(zkConnection, - username, - clustername, - canBeReadOnly, - createClusterPath, - watchEventHandler, - sessionTimeout); - } - - - @Override - public synchronized void close() throws IOException { - if (zookeeper != null) { - try { - zookeeper.close(); - } catch (InterruptedException ignored) { - - } - zookeeper = null; - } - } - - public String getConnectionString() { - return zkConnection; - } - - public String getClusterPath() { - return mkClusterPath(username, clustername); - } - - public boolean getConnected() { - return zookeeper.getState().isConnected(); - } - - public boolean getAlive() { - return zookeeper.getState().isAlive(); - } - - public ZooKeeper.States getState() { - return zookeeper.getState(); - } - - public Stat getClusterStat() throws KeeperException, InterruptedException { - return stat(getClusterPath()); - } - - public boolean exists(String path) throws - KeeperException, - InterruptedException { - return stat(path) != null; - } - - public Stat stat(String path) throws KeeperException, InterruptedException { - return zookeeper.exists(path, false); - } - - @Override - public String toString() { - return "ZK integration bound @ " + zkConnection + ": " + zookeeper; - } - -/** - * Event handler to notify of state events - * @param event - */ - @Override - public void process(WatchedEvent event) { - log.debug("{}", event); - try { - maybeInit(); - } catch (Exception e) { - log.error("Failed to init", e); - } - if (watchEventHandler != null) { - watchEventHandler.process(event); - } - } - - private void maybeInit() throws KeeperException, InterruptedException { - if (!toInit.getAndSet(true) && createClusterPath) { - log.debug("initing"); - //create the user path - mkPath(ZK_USERS_PATH_LIST, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - //create the specific user - createPath(userPath, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - } - } - - /** - * Create a path under a parent, don't care if it already exists - * As the path isn't returned, this isn't the way to create sequentially - * numbered nodes. - * @param parent parent dir. Must have a trailing / if entry!=null||empty - * @param entry entry -can be null or "", in which case it is not appended - * @param acl - * @param createMode - * @return the path if created; null if not - */ - public String createPath(String parent, - String entry, - List<ACL> acl, - CreateMode createMode) throws KeeperException, InterruptedException { - //initial create of full path - assert acl != null; - assert !acl.isEmpty(); - assert parent != null; - String path = parent; - if (entry != null) { - path = path + entry; - } - try { - log.debug("Creating ZK path {}", path); - return zookeeper.create(path, null, acl, createMode); - } catch (KeeperException.NodeExistsException ignored) { - //node already there - log.debug("node already present:{}",path); - return null; - } - } - - /** - * Recursive path create - * @param paths path list - * @param acl acl list - * @param createMode create modes - */ - public void mkPath(List<String> paths, - List<ACL> acl, - CreateMode createMode) throws KeeperException, InterruptedException { - String history = "/"; - for (String entry : paths) { - createPath(history, entry, acl, createMode); - history = history + entry + "/"; - } - } - - /** - * Delete a node, does not throw an exception if the path is not fond - * @param path path to delete - * @return true if the path could be deleted, false if there was no node to delete - * - */ - public boolean delete(String path) throws - InterruptedException, - KeeperException { - try { - zookeeper.delete(path, -1); - log.debug("Deleting {}", path); - return true; - } catch (KeeperException.NoNodeException ignored) { - return false; - } - } - - /** - * Recursively delete a node, does not throw exception if any node does not exist. - * @param path - * @return true if delete was successful - */ - public boolean deleteRecursive(String path) throws KeeperException, InterruptedException { - - try { - List<String> children = zookeeper.getChildren(path, false); - for (String child : children) { - deleteRecursive(path + "/" + child); - } - delete(path); - } catch (KeeperException.NoNodeException ignored) { - return false; - } - - return true; - } - - /** - * Build the path to a cluster; exists once the cluster has come up. - * Even before that, a ZK watcher could wait for it. - * @param username user - * @param clustername name of the cluster - * @return a strin - */ - public static String mkClusterPath(String username, String clustername) { - return mkSliderUserPath(username) + "/" + clustername; - } -/** - * Build the path to a cluster; exists once the cluster has come up. - * Even before that, a ZK watcher could wait for it. - * @param username user - * @return a string - */ - public static String mkSliderUserPath(String username) { - return SVC_SLIDER_USERS + "/" + username; - } - - /** - * Blocking enum of users. - * @return an unordered list of clusters under a user - */ - public List<String> getClusters() throws KeeperException, - InterruptedException { - return zookeeper.getChildren(userPath, null); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKPathBuilder.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKPathBuilder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKPathBuilder.java deleted file mode 100644 index b088568..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKPathBuilder.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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.zk; - -import java.util.Locale; - -public final class ZKPathBuilder { - - private final String username, appname, clustername; - private final String quorum; - - private String appPath; - private String registryPath; - private final String appQuorum; - - public ZKPathBuilder(String username, - String appname, - String clustername, - String quorum, - String appQuorum) { - this.username = username; - this.appname = appname; - this.clustername = clustername; - this.quorum = quorum; - appPath = buildAppPath(); - registryPath = buildRegistryPath(); - this.appQuorum = appQuorum; - } - - public String buildAppPath() { - return String.format(Locale.ENGLISH, "/yarnapps_%s_%s_%s", appname, - username, clustername); - - } - - public String buildRegistryPath() { - return String.format(Locale.ENGLISH, "/services_%s_%s_%s", appname, - username, clustername); - - } - - public String getQuorum() { - return quorum; - } - - public String getAppQuorum() { - return appQuorum; - } - - public String getAppPath() { - return appPath; - } - - public void setAppPath(String appPath) { - this.appPath = appPath; - } - - public String getRegistryPath() { - return registryPath; - } - - public void setRegistryPath(String registryPath) { - this.registryPath = registryPath; - } - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZookeeperUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZookeeperUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZookeeperUtils.java deleted file mode 100644 index cc1b2c9..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZookeeperUtils.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * 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.zk; - -import com.google.common.net.HostAndPort; -import org.apache.hadoop.util.StringUtils; -import org.apache.slider.common.tools.SliderUtils; -import org.apache.slider.core.exceptions.BadConfigException; - -import java.util.ArrayList; -import java.util.List; - -public class ZookeeperUtils { - public static final int DEFAULT_PORT = 2181; - - public static String buildConnectionString(String zkHosts, int port) { - String zkPort = Integer.toString(port); - //parse the hosts - String[] hostlist = zkHosts.split(",", 0); - String quorum = SliderUtils.join(hostlist, ":" + zkPort + ",", false); - return quorum; - } - - /** - * Take a quorum list and split it to (trimmed) pairs - * @param hostPortQuorumList list of form h1:port, h2:port2,... - * @return a possibly empty list of values between commas. They may not be - * valid hostname:port pairs - */ - public static List<String> splitToPairs(String hostPortQuorumList) { - // split an address hot - String[] strings = StringUtils.getStrings(hostPortQuorumList); - int len = 0; - if (strings != null) { - len = strings.length; - } - List<String> tuples = new ArrayList<String>(len); - if (strings != null) { - for (String s : strings) { - tuples.add(s.trim()); - } - } - return tuples; - } - - /** - * Split a quorum list into a list of hostnames and ports - * @param hostPortQuorumList split to a list of hosts and ports - * @return a list of values - */ - public static List<HostAndPort> splitToHostsAndPorts(String hostPortQuorumList) { - // split an address hot - String[] strings = StringUtils.getStrings(hostPortQuorumList); - int len = 0; - if (strings != null) { - len = strings.length; - } - List<HostAndPort> list = new ArrayList<HostAndPort>(len); - if (strings != null) { - for (String s : strings) { - list.add(HostAndPort.fromString(s.trim()).withDefaultPort(DEFAULT_PORT)); - } - } - return list; - } - - /** - * Build up to a hosts only list - * @param hostAndPorts - * @return a list of the hosts only - */ - public static String buildHostsOnlyList(List<HostAndPort> hostAndPorts) { - StringBuilder sb = new StringBuilder(); - for (HostAndPort hostAndPort : hostAndPorts) { - sb.append(hostAndPort.getHostText()).append(","); - } - if (sb.length() > 0) { - sb.delete(sb.length() - 1, sb.length()); - } - return sb.toString(); - } - - public static String buildQuorumEntry(HostAndPort hostAndPort, - int defaultPort) { - String s = hostAndPort.toString(); - if (hostAndPort.hasPort()) { - return s; - } else { - return s + ":" + defaultPort; - } - } - - /** - * Build a quorum list, injecting a ":defaultPort" ref if needed on - * any entry without one - * @param hostAndPorts - * @param defaultPort - * @return - */ - public static String buildQuorum(List<HostAndPort> hostAndPorts, int defaultPort) { - List<String> entries = new ArrayList<String>(hostAndPorts.size()); - for (HostAndPort hostAndPort : hostAndPorts) { - entries.add(buildQuorumEntry(hostAndPort, defaultPort)); - } - return SliderUtils.join(entries, ",", false); - } - - public static String convertToHostsOnlyList(String quorum) throws - BadConfigException { - List<HostAndPort> hostAndPorts = splitToHostsAndPortsStrictly(quorum); - return ZookeeperUtils.buildHostsOnlyList(hostAndPorts); - } - - public static List<HostAndPort> splitToHostsAndPortsStrictly(String quorum) throws - BadConfigException { - List<HostAndPort> hostAndPorts = - ZookeeperUtils.splitToHostsAndPorts(quorum); - if (hostAndPorts.isEmpty()) { - throw new BadConfigException("empty zookeeper quorum"); - } - return hostAndPorts; - } - - public static int getFirstPort(String quorum, int defVal) throws - BadConfigException { - List<HostAndPort> hostAndPorts = splitToHostsAndPortsStrictly(quorum); - int port = hostAndPorts.get(0).getPortOrDefault(defVal); - return port; - - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java deleted file mode 100644 index 1e1b1b8..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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.providers; - -import org.apache.hadoop.service.AbstractService; -import org.apache.hadoop.util.StringUtils; -import org.apache.hadoop.yarn.api.ApplicationConstants; -import org.apache.hadoop.yarn.api.records.Container; -import org.apache.hadoop.yarn.api.records.ContainerId; -import org.apache.hadoop.yarn.api.records.ContainerStatus; -import org.apache.hadoop.yarn.service.conf.SliderKeys; -import org.apache.hadoop.yarn.service.provider.ProviderService; -import org.apache.hadoop.yarn.service.provider.ProviderUtils; -import org.apache.hadoop.yarn.service.timelineservice.ServiceTimelinePublisher; -import org.apache.slider.api.resource.Application; -import org.apache.slider.api.resource.Component; -import org.apache.slider.api.resource.ContainerState; -import org.apache.slider.common.tools.SliderFileSystem; -import org.apache.slider.common.tools.SliderUtils; -import org.apache.slider.core.exceptions.SliderException; -import org.apache.slider.core.launch.CommandLineBuilder; -import org.apache.slider.core.launch.ContainerLauncher; -import org.apache.slider.core.registry.docstore.PublishedConfiguration; -import org.apache.slider.server.appmaster.state.RoleInstance; -import org.apache.slider.server.appmaster.state.StateAccessForProviders; -import org.apache.slider.server.services.yarnregistry.YarnRegistryViewForProviders; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Map; -import java.util.Map.Entry; - -import static org.apache.hadoop.yarn.service.utils.ServiceApiUtil.$; - -public abstract class AbstractProviderService extends AbstractService - implements ProviderService, SliderKeys { - - protected static final Logger log = - LoggerFactory.getLogger(AbstractProviderService.class); - private static final ProviderUtils providerUtils = new ProviderUtils(); - protected StateAccessForProviders amState; - protected YarnRegistryViewForProviders yarnRegistry; - private ServiceTimelinePublisher serviceTimelinePublisher; - - protected AbstractProviderService(String name) { - super(name); - } - - public abstract void processArtifact(ContainerLauncher launcher, - Application application, RoleInstance roleInstance, - SliderFileSystem fileSystem) throws IOException; - - - public void buildContainerLaunchContext(ContainerLauncher launcher, - Application application, Container container, ProviderRole providerRole, - SliderFileSystem fileSystem, RoleInstance roleInstance) - throws IOException, SliderException { - Component component = providerRole.component; - processArtifact(launcher, application, roleInstance, fileSystem); - - // Generate tokens (key-value pair) for config substitution. - // Get pre-defined tokens - Map<String, String> globalTokens = amState.getGlobalSubstitutionTokens(); - Map<String, String> tokensForSubstitution = providerUtils - .initCompTokensForSubstitute(null); - tokensForSubstitution.putAll(globalTokens); - // Set the environment variables in launcher - launcher.putEnv(SliderUtils - .buildEnvMap(component.getConfiguration(), tokensForSubstitution)); - launcher.setEnv("WORK_DIR", ApplicationConstants.Environment.PWD.$()); - launcher.setEnv("LOG_DIR", ApplicationConstants.LOG_DIR_EXPANSION_VAR); - if (System.getenv(HADOOP_USER_NAME) != null) { - launcher.setEnv(HADOOP_USER_NAME, System.getenv(HADOOP_USER_NAME)); - } - launcher.setEnv("LANG", "en_US.UTF-8"); - launcher.setEnv("LC_ALL", "en_US.UTF-8"); - launcher.setEnv("LANGUAGE", "en_US.UTF-8"); - - for (Entry<String, String> entry : launcher.getEnv().entrySet()) { - tokensForSubstitution.put($(entry.getKey()), entry.getValue()); - } - providerUtils.addComponentHostTokens(tokensForSubstitution, amState); - - // create config file on hdfs and add local resource - - // substitute launch command - String launchCommand = ProviderUtils - .substituteStrWithTokens(component.getLaunchCommand(), - tokensForSubstitution); - CommandLineBuilder operation = new CommandLineBuilder(); - operation.add(launchCommand); - operation.addOutAndErrFiles(OUT_FILE, ERR_FILE); - launcher.addCommand(operation.build()); - - // publish exports - providerUtils - .substituteMapWithTokens(application.getQuicklinks(), tokensForSubstitution); - PublishedConfiguration pubconf = new PublishedConfiguration(QUICK_LINKS, - application.getQuicklinks().entrySet()); - amState.getPublishedSliderConfigurations().put(QUICK_LINKS, pubconf); - if (serviceTimelinePublisher != null) { - serviceTimelinePublisher.serviceAttemptUpdated(application); - } - } - - public boolean processContainerStatus(ContainerId containerId, - ContainerStatus status) { - log.debug("Handling container status: {}", status); - if (SliderUtils.isEmpty(status.getIPs()) || - SliderUtils.isUnset(status.getHost())) { - return true; - } - RoleInstance instance = amState.getOwnedContainer(containerId); - if (instance == null) { - // container is completed? - return false; - } - - // TODO publish ip and host - org.apache.slider.api.resource.Container container = - instance.providerRole.component.getContainer(containerId.toString()); - if (container != null) { - container.setIp(StringUtils.join(",", status.getIPs())); - container.setHostname(status.getHost()); - container.setState(ContainerState.READY); - } else { - log.warn(containerId + " not found in Application!"); - } - return false; - } - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/MonitorDetail.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/MonitorDetail.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/MonitorDetail.java deleted file mode 100644 index 27d3415..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/MonitorDetail.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.providers; - -/** - * Details about some exported information from a provider to the AM web UI. - */ -public class MonitorDetail { - - private final String value; - private final boolean isUrl; - - public MonitorDetail(String value, boolean isUrl) { - this.value = value; - this.isUrl = isUrl; - } - - public String getValue() { - return value; - } - - public boolean isUrl() { - return isUrl; - } - - public String toString() { - return "MonitorDetail[" + value + " isUrl=" + isUrl + "]"; - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicy.java deleted file mode 100644 index 128dd5d..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicy.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.providers; - -/** - * Placement values. - * This is nominally a bitmask, though not all values make sense - */ -public class PlacementPolicy { - - /** - * Default value: history used, anti-affinity hinted at on rebuild/flex up - */ - public static final int NONE = 0; - - /** - * Default value: history used, anti-affinity hinted at on rebuild/flex up - */ - public static final int DEFAULT = NONE; - - /** - * Strict placement: when asking for an instance for which there is - * history, mandate that it is strict - */ - public static final int STRICT = 1; - - /** - * No data locality; do not use placement history - */ - public static final int ANYWHERE = 2; - - /** - * @Deprecated: use {@link #ANYWHERE} - */ - @Deprecated - public static final int NO_DATA_LOCALITY = ANYWHERE; - - /** - * Anti-affinity is mandatory. - */ - public static final int ANTI_AFFINITY_REQUIRED = 4; - - /** - * Exclude from flexing; used internally to mark AMs. - */ - public static final int EXCLUDE_FROM_FLEXING = 16; - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicyOptions.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicyOptions.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicyOptions.java deleted file mode 100644 index e61f944..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/PlacementPolicyOptions.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.providers; - -public enum PlacementPolicyOptions { - - EXCLUDE_FROM_FLEXING, - NO_DATA_LOCALITY, - ANTI_AFFINITY_REQUIRED, -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompleted.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompleted.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompleted.java deleted file mode 100644 index f6ff4fd..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompleted.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.providers; - -/** - * This is the callback triggered by the {@link ProviderCompletedCallable} - * when it generates a notification - */ -public interface ProviderCompleted { - - public void eventCallbackEvent(Object parameter); - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompletedCallable.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompletedCallable.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompletedCallable.java deleted file mode 100644 index 47939c9..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCompletedCallable.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.providers; - -import java.util.concurrent.Callable; - -public class ProviderCompletedCallable implements Callable<Object> { - - private final ProviderCompleted callback; - private final Object parameter; - - public ProviderCompletedCallable(ProviderCompleted callback, Object parameter) { - this.callback = callback; - this.parameter = parameter; - } - - @Override - public Object call() throws Exception { - callback.eventCallbackEvent(parameter); - return parameter; - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java deleted file mode 100644 index b07fc29..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.providers; - -import org.apache.hadoop.conf.Configuration; - -import java.util.List; -public interface ProviderCore { - - String getName(); - - List<ProviderRole> getRoles(); - - Configuration getConf(); -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java deleted file mode 100644 index 6fd85bf..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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.providers; - -import org.apache.slider.api.ResourceKeys; -import org.apache.slider.api.resource.Component; -import org.apache.slider.server.appmaster.state.RoleInstance; -import org.apache.slider.server.servicemonitor.MonitorUtils; -import org.apache.slider.server.servicemonitor.Probe; - -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicLong; - -/** - * Provider role and key for use in app requests. - * - * This class uses the role name as the key for hashes and in equality tests, - * and ignores the other values. - */ -public final class ProviderRole { - public final String name; - public final int id; - public int placementPolicy; - public int nodeFailureThreshold; - public final long placementTimeoutSeconds; - public final String labelExpression; - public final Component component; - public AtomicLong componentIdCounter = null; - public Queue<RoleInstance> failedInstances = new ConcurrentLinkedQueue<>(); - public Probe probe; - - public ProviderRole(String name, int id) { - this(name, - id, - PlacementPolicy.DEFAULT, - ResourceKeys.DEFAULT_NODE_FAILURE_THRESHOLD, - ResourceKeys.DEFAULT_PLACEMENT_ESCALATE_DELAY_SECONDS, - ResourceKeys.DEF_YARN_LABEL_EXPRESSION); - } - - /** - * Create a provider role - * @param name role/component name - * @param id ID. This becomes the YARN priority - * @param policy placement policy - * @param nodeFailureThreshold threshold for node failures (within a reset interval) - * after which a node failure is considered an app failure - * @param placementTimeoutSeconds for lax placement, timeout in seconds before - * @param labelExpression label expression for requests; may be null - */ - public ProviderRole(String name, - int id, - int policy, - int nodeFailureThreshold, - long placementTimeoutSeconds, - String labelExpression) { - this(name, - id, - policy, - nodeFailureThreshold, - placementTimeoutSeconds, - labelExpression, - new Component().name(name).numberOfContainers(0L)); - } - - /** - * Create a provider role with a role group - * @param name role/component name - * @param id ID. This becomes the YARN priority - * @param policy placement policy - * @param nodeFailureThreshold threshold for node failures (within a reset interval) - * after which a node failure is considered an app failure - * @param placementTimeoutSeconds for lax placement, timeout in seconds before - * @param labelExpression label expression for requests; may be null - */ - public ProviderRole(String name, int id, int policy, - int nodeFailureThreshold, long placementTimeoutSeconds, - String labelExpression, Component component) { - this.name = name; - this.id = id; - this.placementPolicy = policy; - this.nodeFailureThreshold = nodeFailureThreshold; - this.placementTimeoutSeconds = placementTimeoutSeconds; - this.labelExpression = labelExpression; - this.component = component; - if(component.getUniqueComponentSupport()) { - componentIdCounter = new AtomicLong(0); - } - this.probe = MonitorUtils.getProbe(component.getReadinessCheck()); - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - ProviderRole that = (ProviderRole) o; - return name.equals(that.name); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("ProviderRole{"); - sb.append("name='").append(name).append('\''); - sb.append(", id=").append(id); - sb.append(", placementPolicy=").append(placementPolicy); - sb.append(", nodeFailureThreshold=").append(nodeFailureThreshold); - sb.append(", placementTimeoutSeconds=").append(placementTimeoutSeconds); - sb.append(", labelExpression='").append(labelExpression).append('\''); - sb.append('}'); - return sb.toString(); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/AppMasterActionOperations.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/AppMasterActionOperations.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/AppMasterActionOperations.java deleted file mode 100644 index 288f25a..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/AppMasterActionOperations.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.server.appmaster; - -import org.apache.slider.server.appmaster.operations.RMOperationHandlerActions; - -/** - * Interface of AM operations - */ -public interface AppMasterActionOperations extends RMOperationHandlerActions { - - -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PrivilegedConnectToCM.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PrivilegedConnectToCM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PrivilegedConnectToCM.java deleted file mode 100644 index 65b88cf..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PrivilegedConnectToCM.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.server.appmaster; - - -import org.apache.hadoop.yarn.api.ContainerManagementProtocol; - -import java.net.InetSocketAddress; -import java.security.PrivilegedAction; - -/** - * Implement privileged connection to the CM - * - */ -public class PrivilegedConnectToCM implements PrivilegedAction<ContainerManagementProtocol> { - final SliderAppMaster appMaster; - final InetSocketAddress cmAddress; - - public PrivilegedConnectToCM(SliderAppMaster appMaster, - InetSocketAddress cmAddress) { - this.appMaster = appMaster; - this.cmAddress = cmAddress; - } - - - @Override //PrivilegedAction - public ContainerManagementProtocol run() { - return ((ContainerManagementProtocol) appMaster.getProxy( - ContainerManagementProtocol.class, - cmAddress)); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java deleted file mode 100644 index 5d52441..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.server.appmaster; - -import org.apache.hadoop.yarn.api.records.Resource; -import org.apache.hadoop.yarn.util.Records; -import org.apache.hadoop.yarn.util.resource.Resources; -import org.apache.slider.server.appmaster.state.AbstractClusterServices; - -public class ProtobufClusterServices extends AbstractClusterServices { - - public Resource newResource() { - return Records.newRecord(Resource.class); - } - - @Override - public Resource newResource(int memory, int cores) { - return Resources.createResource(memory, cores); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/394183c7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PublishedArtifacts.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PublishedArtifacts.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PublishedArtifacts.java deleted file mode 100644 index fdc386f..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/PublishedArtifacts.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.server.appmaster; - -/** - * This is the name of YARN artifacts that are published - */ -public interface PublishedArtifacts { - - String COMPLETE_CONFIG = "complete-config"; - String CORE_SITE_CONFIG = "core-site"; - String HDFS_SITE_CONFIG = "hdfs-site"; - String YARN_SITE_CONFIG = "yarn-site"; - String LOG4J = "log4j"; -} --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org