Repository: hadoop Updated Branches: refs/heads/yarn-native-services 4ce02c35e -> af649d21f
http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/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 index c8b3adb..1af883e 100644 --- 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 @@ -137,8 +137,6 @@ public class MiniZooKeeperCluster extends AbstractService { } /** - * @param baseDir - * @param numZooKeeperServers * @return ClientPort server bound to, -1 if there was a * binding problem and we couldn't pick another port. * @throws IOException @@ -229,17 +227,6 @@ public class MiniZooKeeperCluster extends AbstractService { } } - /** - * Delete the basedir - */ - private void deleteBaseDir() { - if (baseDir != null) { - baseDir.delete(); - baseDir = null; - } - - } - @Override protected void serviceStop() throws Exception { @@ -359,7 +346,7 @@ public class MiniZooKeeperCluster extends AbstractService { try { sock = new Socket("localhost", port); OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes()); + outstream.write("stat".getBytes("UTF-8")); outstream.flush(); } finally { IOUtils.closeSocket(sock); @@ -387,10 +374,10 @@ public class MiniZooKeeperCluster extends AbstractService { BufferedReader reader = null; try { OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes()); + outstream.write("stat".getBytes("UTF-8")); outstream.flush(); - Reader isr = new InputStreamReader(sock.getInputStream()); + Reader isr = new InputStreamReader(sock.getInputStream(), "UTF-8"); reader = new BufferedReader(isr); String line = reader.readLine(); if (line != null && line.startsWith("Zookeeper version:")) { @@ -412,12 +399,4 @@ public class MiniZooKeeperCluster extends AbstractService { } return false; } - - public int getClientPort() { - return clientPort; - } - - public String getZkQuorum() { - return zkQuorum; - } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/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 index 6ed58d5..ef96c9b 100644 --- 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 @@ -43,14 +43,14 @@ public class ZKIntegration implements Watcher, Closeable { /** * Base path for services */ - public static String ZK_SERVICES = "services"; + public static final String ZK_SERVICES = "services"; /** * Base path for all Slider references */ - public static String ZK_SLIDER = "slider"; - public static String ZK_USERS = "users"; - public static String SVC_SLIDER = "/" + ZK_SERVICES + "/" + ZK_SLIDER; - public static String SVC_SLIDER_USERS = SVC_SLIDER + "/" + ZK_USERS; + 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; public static final List<String> ZK_USERS_PATH_LIST = new ArrayList<String>(); static { @@ -59,7 +59,7 @@ public class ZKIntegration implements Watcher, Closeable { ZK_USERS_PATH_LIST.add(ZK_USERS); } - public static int SESSION_TIMEOUT = 30000; + public static final int SESSION_TIMEOUT = 30000; protected static final Logger log = LoggerFactory.getLogger(ZKIntegration.class); private ZooKeeper zookeeper; @@ -279,14 +279,6 @@ public class ZKIntegration implements Watcher, Closeable { } } -/** - * 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); - } - /** * Delete a node, does not throw an exception if the path is not fond * @param path path to delete http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.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/ProviderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java index cff5ed8..0d9ddec 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java @@ -735,11 +735,11 @@ public class ProviderUtils implements RoleKeys, SliderKeys { Map<String, Map<String, String>> configurations) { Map<String, String> allConfigs = new HashMap<>(); String lookupFormat = "${@//site/%s/%s}"; - for (String configType : configurations.keySet()) { - Map<String, String> configBucket = configurations.get(configType); - for (String configName : configBucket.keySet()) { - allConfigs.put(String.format(lookupFormat, configType, configName), - configBucket.get(configName)); + for (Map.Entry<String, Map<String, String>> entry : configurations.entrySet()) { + Map<String, String> configBucket = entry.getValue(); + for(Map.Entry<String, String> config: configBucket.entrySet()) { + allConfigs.put(String.format(lookupFormat, entry.getKey(), config.getKey()), + config.getValue()); } } @@ -758,15 +758,15 @@ public class ProviderUtils implements RoleKeys, SliderKeys { configValue = configValue.replace(lookUpKey, lookUpValue); } } - if (!configValue.equals(entry.getValue())) { + if (configValue != null && !configValue.equals(entry.getValue())) { finished = false; allConfigs.put(entry.getKey(), configValue); } } } - - for (String configType : configurations.keySet()) { - Map<String, String> configBucket = configurations.get(configType); + for (Map.Entry<String, Map<String, String>> configEntry : configurations + .entrySet()) { + Map<String, String> configBucket = configEntry.getValue(); for (Map.Entry<String, String> entry: configBucket.entrySet()) { String configName = entry.getKey(); String configValue = entry.getValue(); @@ -817,7 +817,8 @@ public class ProviderUtils implements RoleKeys, SliderKeys { */ private void addConfsToList(Map<String, String> confMap, Set<String> confList, String prefix, String suffix) { - for (String key : confMap.keySet()) { + for (Entry<String, String> entry : confMap.entrySet()) { + String key = entry.getKey(); if (key.startsWith(prefix) && key.endsWith(suffix)) { String confName = key.substring(prefix.length(), key.length() - suffix.length()); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.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/docker/DockerProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java index 1482062..5edfa6a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java @@ -257,19 +257,20 @@ public class DockerProviderService extends AbstractProviderService implements .getInternalsSnapshot(), null, getClusterName(), clientName, clientName, getAmState()); - for (String configFileDN : configurations.keySet()) { + for (Map.Entry<String, Map<String, String>> entry : configurations.entrySet()) { + String configFileDN = entry.getKey(); String configFileName = appConf.getComponentOpt(clientName, OptionKeys.CONF_FILE_PREFIX + configFileDN + OptionKeys .NAME_SUFFIX, null); String configFileType = appConf.getComponentOpt(clientName, OptionKeys.CONF_FILE_PREFIX + configFileDN + OptionKeys .TYPE_SUFFIX, null); - if (configFileName == null && configFileType == null) { + if (configFileName == null || configFileType == null) { continue; } ConfigFormat configFormat = ConfigFormat.resolve(configFileType); - Map<String, String> config = configurations.get(configFileDN); + Map<String, String> config = entry.getValue(); ConfigUtils.prepConfigForTemplateOutputter(configFormat, config, fileSystem, getClusterName(), new File(configFileName).getName()); @@ -365,9 +366,10 @@ public class DockerProviderService extends AbstractProviderService implements for (Entry<String, String> export : exports.entrySet()) { String value = export.getValue(); // replace host names and site properties - for (String token : replaceTokens.keySet()) { + for (Map.Entry<String, String> entry : replaceTokens.entrySet()) { + String token = entry.getKey(); if (value.contains(token)) { - value = value.replaceAll(Pattern.quote(token), replaceTokens.get(token)); + value = value.replaceAll(Pattern.quote(token), entry.getValue()); } } ExportEntry entry = new ExportEntry(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.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/management/BoolMetric.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/management/BoolMetric.java index 33f8d85..89dfbfd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.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/management/BoolMetric.java @@ -47,21 +47,6 @@ public class BoolMetric implements Metric, Gauge<Integer> { return value.get() ? 1 : 0; } - /** - * Evaluate from a string. Returns true if the string is considered to match 'true', - * false otherwise. - * @param s source - * @return true if the input parses to an integer other than 0. False if it doesn't parse - * or parses to 0. - */ - public static boolean fromString(String s) { - try { - return Integer.valueOf(s) != 0; - } catch (NumberFormatException e) { - return false; - } - } - @Override public String toString() { return value.toString(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.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/management/MetricsAndMonitoring.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/management/MetricsAndMonitoring.java index 37a8935..1fe8ea6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.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/management/MetricsAndMonitoring.java @@ -58,11 +58,6 @@ public class MetricsAndMonitoring extends CompositeService { private final List<MetricSet> metricSets = new ArrayList<>(); - /** - * List of recorded events - */ - private final List<RecordedEvent> eventHistory = new ArrayList<>(100); - public static final int EVENT_LIMIT = 1000; public MetricRegistry getMetrics() { @@ -139,26 +134,6 @@ public class MetricsAndMonitoring extends CompositeService { return register(MetricRegistry.name(klass, names), metric); } - - /** - * Add an event (synchronized) - * @param event event - */ - public synchronized void noteEvent(RecordedEvent event) { - if (eventHistory.size() > EVENT_LIMIT) { - eventHistory.remove(0); - } - eventHistory.add(event); - } - - /** - * Clone the event history; blocks for the duration of the copy operation. - * @return a new list - */ - public synchronized List<RecordedEvent> cloneEventHistory() { - return new ArrayList<>(eventHistory); - } - /** * Add a metric set for registering and deregistration on service stop * @param metricSet metric set http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.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/management/RangeLimitedCounter.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/management/RangeLimitedCounter.java deleted file mode 100644 index 80e88fc..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/management/RangeLimitedCounter.java +++ /dev/null @@ -1,85 +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.management; - -import com.codahale.metrics.Counter; -import com.codahale.metrics.Counting; -import com.codahale.metrics.Metric; - -import java.util.concurrent.atomic.AtomicLong; - -/** - * This is a counter whose range can be given a min and a max - */ -public class RangeLimitedCounter implements Metric, Counting { - - private final AtomicLong value; - private final long min, max; - - /** - * Instantiate - * @param val current value - * @param min minimum value - * @param max max value (or 0 for no max) - */ - public RangeLimitedCounter(long val, long min, long max) { - this.value = new AtomicLong(val); - this.min = min; - this.max = max; - } - - /** - * Set to a new value. If below the min, set to the minimum. If the max is non - * zero and the value is above that maximum, set it to the maximum instead. - * @param val value - */ - public synchronized void set(long val) { - if (val < min) { - val = min; - } else if (max > 0 && val > max) { - val = max; - } - value.set(val); - } - - public void inc() { - inc(1); - } - - public void dec() { - dec(1); - } - - public synchronized void inc(int delta) { - set(value.get() + delta); - } - - public synchronized void dec(int delta) { - set(value.get() - delta); - } - - public long get() { - return value.get(); - } - - @Override - public long getCount() { - return value.get(); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.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/management/RecordedEvent.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/management/RecordedEvent.java deleted file mode 100644 index d48d337..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/management/RecordedEvent.java +++ /dev/null @@ -1,58 +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.management; - -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.map.annotate.JsonSerialize; - -import java.text.DateFormat; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) -public class RecordedEvent { - private static final DateFormat dateFormat = DateFormat.getDateInstance(); - public long id; - public String name; - public long timestamp; - public String time; - public String category; - public String host; - public int role; - public String text; - - public RecordedEvent() { - } - - /** - * Create an event. The timestamp is also converted to a time string - * @param id id counter - * @param name event name - * @param timestamp timestamp. If non-zero, is used to build the {@code time} text field. - * @param category even category - * @param text arbitrary text - */ - public RecordedEvent(long id, String name, long timestamp, String category, String text) { - this.id = id; - this.name = name; - this.timestamp = timestamp; - this.time = timestamp > 0 ? dateFormat.format(timestamp) : ""; - this.category = category; - this.text = text; - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.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/rpc/SliderIPCService.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/rpc/SliderIPCService.java index 00910a4..70c2f05 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.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/rpc/SliderIPCService.java @@ -59,7 +59,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import static org.apache.slider.api.proto.RestTypeMarshalling.marshall; +import static org.apache.slider.api.types.RestTypeMarshalling.marshall; import static org.apache.slider.server.appmaster.web.rest.RestPaths.*; /** http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.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/state/NodeInstance.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/state/NodeInstance.java index cc17cf0..fd60d7d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.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/state/NodeInstance.java @@ -253,7 +253,7 @@ public class NodeInstance { new StringBuilder(toString()); sb.append("{ "); for (NodeEntry entry : nodeEntries) { - sb.append(String.format("\n [%02d] ", entry.rolePriority)); + sb.append(String.format("%n [%02d] ", entry.rolePriority)); sb.append(entry.toString()); } sb.append("} "); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.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/state/OutstandingRequestTracker.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/state/OutstandingRequestTracker.java index c16aa3c..dbdf8ca 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.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/state/OutstandingRequestTracker.java @@ -232,7 +232,7 @@ public class OutstandingRequestTracker { * the most recent one is picked first. This operation <i>does not</i> * change the role history, though it queries it. */ - static class newerThan implements Comparator<Container>, Serializable { + static class newerThan implements Comparator<Container> { private RoleHistory rh; public newerThan(RoleHistory rh) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.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/state/RoleStatus.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/state/RoleStatus.java index 0a3a3c9..98557ce 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.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/state/RoleStatus.java @@ -321,10 +321,6 @@ public final class RoleStatus implements Cloneable, MetricSet { return completed.get(); } - public synchronized void setCompleted(int completed) { - this.completed.set(completed); - } - public long incCompleted() { return completed.incrementAndGet(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/InsecureAmFilter.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/web/rest/InsecureAmFilter.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/web/rest/InsecureAmFilter.java index d5b6b36..b4a92ba 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/InsecureAmFilter.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/web/rest/InsecureAmFilter.java @@ -69,7 +69,6 @@ public class InsecureAmFilter extends AmIpFilter { FilterChain chain) throws IOException, ServletException { rejectNonHttpRequests(req); HttpServletRequest httpReq = (HttpServletRequest) req; - HttpServletResponse httpResp = (HttpServletResponse) resp; String requestURI = httpReq.getRequestURI(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.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/web/rest/publisher/PublisherResource.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/web/rest/publisher/PublisherResource.java index c727581..b67f069 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.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/web/rest/publisher/PublisherResource.java @@ -48,6 +48,7 @@ import java.net.URLClassLoader; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -122,9 +123,9 @@ public class PublisherResource extends AbstractSliderResource { @GET @Path(CLASSPATH) @Produces({MediaType.APPLICATION_JSON}) - public Set<URL> getAMClassPath() { + public List<URL> getAMClassPath() { URL[] urls = ((URLClassLoader) getClass().getClassLoader()).getURLs(); - return new LinkedHashSet<URL>(Arrays.asList(urls)); + return Arrays.asList(urls); } @GET http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.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/web/view/ContainerStatsBlock.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/web/view/ContainerStatsBlock.java index 56285c2..8b7d695 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.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/web/view/ContainerStatsBlock.java @@ -32,6 +32,7 @@ import org.apache.slider.api.types.ComponentInformation; import org.apache.slider.server.appmaster.state.RoleInstance; import org.apache.slider.server.appmaster.web.WebAppApi; +import javax.annotation.Nonnull; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -163,7 +164,7 @@ public class ContainerStatsBlock extends SliderHamletBlock { protected static <T> Function<Entry<String,T>,Entry<TableContent,T>> toTableContentFunction() { return new Function<Entry<String,T>,Entry<TableContent,T>>() { @Override - public Entry<TableContent,T> apply(Entry<String,T> input) { + public Entry<TableContent,T> apply(@Nonnull Entry<String,T> input) { return Maps.immutableEntry(new TableContent(input.getKey()), input.getValue()); } }; http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/ProbeStatus.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/servicemonitor/ProbeStatus.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/ProbeStatus.java index 653f479..b4deabc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/ProbeStatus.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/ProbeStatus.java @@ -25,6 +25,7 @@ import java.util.Date; * Had better be unserializable at the far end if that is to work. */ public final class ProbeStatus implements Serializable { + private static final long serialVersionUID = 165468L; private long timestamp; private String timestampText; http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/utility/AbstractSliderLaunchedService.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/services/utility/AbstractSliderLaunchedService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/utility/AbstractSliderLaunchedService.java index 1622309..43f0e4e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/utility/AbstractSliderLaunchedService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/utility/AbstractSliderLaunchedService.java @@ -41,7 +41,6 @@ public abstract class AbstractSliderLaunchedService extends protected AbstractSliderLaunchedService(String name) { super(name); // make sure all the yarn configs get loaded - YarnConfiguration conf = new YarnConfiguration(); ConfigHelper.registerDeprecatedConfigItems(); } @@ -74,7 +73,6 @@ public abstract class AbstractSliderLaunchedService extends throws BadConfigException { // push back the slider registry entry if needed - String quorum = lookupZKQuorum(); RegistryOperations registryWriterService = createRegistryOperationsInstance(); deployChildService(registryWriterService); http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.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/services/workflow/LongLivedProcess.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java index 9e9e7ac..90a8d40 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java @@ -27,6 +27,7 @@ import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; @@ -527,9 +528,9 @@ public class LongLivedProcess implements Runnable { StringBuilder errorLine = new StringBuilder(LINE_LENGTH); try { errReader = new BufferedReader( - new InputStreamReader(process.getErrorStream())); + new InputStreamReader(process.getErrorStream(), "UTF-8")); outReader = new BufferedReader( - new InputStreamReader(process.getInputStream())); + new InputStreamReader(process.getInputStream(), "UTF-8")); while (!finished.get()) { boolean processed = false; if (readAnyLine(errReader, errorLine, LINE_LENGTH)) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java index 20e72c0..0df6047 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java @@ -153,7 +153,7 @@ public class TestSliderUtils { @Test public void testWrite() throws IOException { File testWriteFile = folder.newFile("testWrite"); - SliderUtils.write(testWriteFile, "test".getBytes("UTF-8"), true); + SliderUtils.write(testWriteFile, "test".getBytes("UTF-8")); Assert.assertTrue(FileUtils.readFileToString(testWriteFile, "UTF-8").equals("test")); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/af649d21/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/MiniZooKeeperCluster.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/MiniZooKeeperCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/MiniZooKeeperCluster.java deleted file mode 100644 index d739324..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/MiniZooKeeperCluster.java +++ /dev/null @@ -1,395 +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.test; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileUtil; -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 - */ -public class MiniZooKeeperCluster { - 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 List<NIOServerCnxnFactory> standaloneServerFactoryList; - private List<ZooKeeperServer> zooKeeperServers; - private List<Integer> clientPortList; - - private int activeZKServerIndex; - private int tickTime = 0; - - private Configuration configuration; - - public MiniZooKeeperCluster() { - this(new Configuration()); - } - - public MiniZooKeeperCluster(Configuration configuration) { - this.started = false; - this.configuration = configuration; - activeZKServerIndex = -1; - zooKeeperServers = new ArrayList<ZooKeeperServer>(); - clientPortList = new ArrayList<Integer>(); - standaloneServerFactoryList = new ArrayList<NIOServerCnxnFactory>(); - } - - 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() { - if (defaultClientPort > 0) { - return defaultClientPort; - } - return 0xc000 + new Random().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); - } - - public int startup(File baseDir) throws IOException, InterruptedException { - return startup(baseDir, 1); - } - - /** - * @param baseDir - * @param numZooKeeperServers - * @return ClientPort server bound to, -1 if there was a - * binding problem and we couldn't pick another port. - * @throws IOException - * @throws InterruptedException - */ - public int startup(File baseDir, int numZooKeeperServers) throws IOException, - InterruptedException { - if (numZooKeeperServers <= 0) - return -1; - - setupTestEnv(); - shutdown(); - - int tentativePort = selectClientPort(); - - // 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(); - 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); - tentativePort++; //for the next server - } - - // set the first one to be active ZK; Others are backups - activeZKServerIndex = 0; - started = true; - clientPort = clientPortList.get(activeZKServerIndex); - 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); - } - } - - /** - * @throws IOException - */ - public void shutdown() throws IOException { - if (!started) { - return; - } - - // 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(); - } - - // clear everything - started = false; - 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) { - long start = System.currentTimeMillis(); - while (true) { - try { - Socket sock = new Socket("localhost", port); - try { - OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes()); - outstream.flush(); - } finally { - sock.close(); - } - } catch (IOException e) { - return true; - } - - if (System.currentTimeMillis() > start + timeout) { - break; - } - try { - Thread.sleep(250); - } catch (InterruptedException e) { - // ignore - } - } - return false; - } - - // XXX: From o.a.zk.t.ClientBase - private static boolean waitForServerUp(int port, long timeout) { - long start = System.currentTimeMillis(); - while (true) { - try { - Socket sock = new Socket("localhost", port); - BufferedReader reader = null; - try { - OutputStream outstream = sock.getOutputStream(); - outstream.write("stat".getBytes()); - outstream.flush(); - - Reader isr = new InputStreamReader(sock.getInputStream()); - reader = new BufferedReader(isr); - String line = reader.readLine(); - if (line != null && line.startsWith("Zookeeper version:")) { - return true; - } - } finally { - sock.close(); - if (reader != null) { - reader.close(); - } - } - } catch (IOException e) { - // ignore as this is expected - LOG.info("server localhost:" + port + " not up " + e); - } - - if (System.currentTimeMillis() > start + timeout) { - break; - } - try { - Thread.sleep(250); - } catch (InterruptedException e) { - // ignore - } - } - return false; - } - - public int getClientPort() { - return clientPort; - } -} --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org