Skip to content

Commit

Permalink
Revert series of 14 commits pushed upstream by accident.
Browse files Browse the repository at this point in the history
  • Loading branch information
paulmillar committed Jul 15, 2019
1 parent 5c7433e commit 1c1de5e
Show file tree
Hide file tree
Showing 10 changed files with 46 additions and 1,080 deletions.
75 changes: 3 additions & 72 deletions modules/cells/src/main/java/dmg/cells/nucleus/CellGlue.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.state.ConnectionState;
import org.apache.curator.shaded.com.google.common.collect.ImmutableMap;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.ZooKeeper;
import org.slf4j.Logger;
Expand All @@ -18,26 +17,20 @@
import javax.annotation.Nonnull;

import java.io.Serializable;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import dmg.util.CpuUsage;
import dmg.util.FractionalCpuUsage;
import dmg.util.TimebasedCounter;

import static com.google.common.base.Preconditions.checkState;
Expand Down Expand Up @@ -67,12 +60,6 @@ class CellGlue
private final CellAddressCore _domainAddress;
private final CuratorFramework _curatorFramework;
private final Optional<String> _zone;
private volatile Map<String,CpuUsage> accumulatedCellCpuUsage = Collections.emptyMap();
private volatile Map<String,FractionalCpuUsage> fractionalCellCpuUsage = Collections.emptyMap();

private final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
private final CpuMonitoringTask cpuMonitor;


CellGlue(String cellDomainName, @Nonnull CuratorFramework curatorFramework,
Optional<String> zone)
Expand Down Expand Up @@ -108,7 +95,6 @@ class CellGlue
killerThreadFactory);
emergencyKillerExecutor.prestartCoreThread();
_emergencyKillerExecutor = MoreExecutors.listeningDecorator(emergencyKillerExecutor);
cpuMonitor = new CpuMonitoringTask(this, executor);
}

private static CuratorFramework withMonitoring(CuratorFramework curator)
Expand Down Expand Up @@ -142,46 +128,6 @@ private static CuratorFramework withMonitoring(CuratorFramework curator)
return curator;
}

void startCpuMonitoring()
{
cpuMonitor.start();
}

void stopCpuMonitoring()
{
cpuMonitor.stop();
}

Duration getUpdateDelay()
{
return cpuMonitor.getUpdateDelay();
}

void setUpdateDelay(Duration delay)
{
cpuMonitor.setUpdateDelay(delay);
}

void setAccumulatedCellCpuUsage(Map<String,CpuUsage> usage)
{
accumulatedCellCpuUsage = ImmutableMap.copyOf(usage);
}

Map<String,CpuUsage> getAccumulatedCellCpuUsage()
{
return accumulatedCellCpuUsage;
}

void setCurrentCellCpuUsage(Map<String,FractionalCpuUsage> usage)
{
fractionalCellCpuUsage = ImmutableMap.copyOf(usage);
}

Map<String,FractionalCpuUsage> getFractionalCellCpuUsage()
{
return fractionalCellCpuUsage;
}

static Thread newThread(ThreadGroup threadGroup, Runnable r)
{
Thread thread = new Thread(threadGroup, r);
Expand Down Expand Up @@ -330,10 +276,10 @@ CellInfo getCellInfo(String name)
return (nucleus == null) ? null : nucleus._getCellInfo();
}

Optional<List<Thread>> getThreads(String name)
Thread[] getThreads(String name)
{
Optional<CellNucleus> nucleus = Optional.ofNullable(getCell(name));
return nucleus.map(CellNucleus::getThreads);
CellNucleus nucleus = getCell(name);
return (nucleus == null) ? null : nucleus.getThreads();
}

private void sendToAll(CellEvent event)
Expand Down Expand Up @@ -740,19 +686,4 @@ public void shutdown()
_curatorFramework.close();
_killerExecutor.shutdown();
}

Optional<String> cellNameFor(ThreadGroup group)
{
if (group == null) {
return Optional.empty();
}

Optional<String> cell = _cellList.entrySet().stream()
.filter(e -> e.getValue().getThreadGroup().equals(group))
.map(Map.Entry::getKey)
.findAny();


return cell.isPresent() ? cell : cellNameFor(group.getParent());
}
}
54 changes: 15 additions & 39 deletions modules/cells/src/main/java/dmg/cells/nucleus/CellNucleus.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.io.FileNotFoundException;
import java.io.Reader;
import java.io.StringReader;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -47,10 +46,7 @@
import java.util.function.BiConsumer;

import dmg.cells.zookeeper.CellCuratorFramework;
import dmg.util.CpuUsage;
import dmg.util.FractionalCpuUsage;
import dmg.util.Pinboard;
import dmg.util.ThreadGroups;
import dmg.util.logback.FilterThresholdSet;
import dmg.util.logback.RootFilterThresholds;

Expand Down Expand Up @@ -260,38 +256,6 @@ public static void initCellGlue(String cellDomainName,
__cellGlue = new CellGlue(cellDomainName, curatorFramework, zone);
}

public static void startCpuMonitoring()
{
__cellGlue.startCpuMonitoring();
}

public static void stopCpuMonitoring()
{
__cellGlue.stopCpuMonitoring();
}

public static void setCpuMonitoringDelay(Duration delay)
{
__cellGlue.setUpdateDelay(delay);
}

public static Duration getCpuMonitoringDelay()
{
return __cellGlue.getUpdateDelay();
}

public static Map<String,CpuUsage> getAccumulatedCellCpuUsage()
{
return __cellGlue.getAccumulatedCellCpuUsage();
}


public static Map<String,FractionalCpuUsage> getFractionalCellCpuUsage()
{
return __cellGlue.getFractionalCellCpuUsage();
}


public static void startCurator()
{
__cellGlue.getCuratorFramework().start();
Expand Down Expand Up @@ -842,12 +806,24 @@ public Thread newThread(@Nonnull Runnable target, @Nonnull String name)
//
// package
//
Optional<List<Thread>> getThreads(String cellName) {
Thread [] getThreads(String cellName) {
return __cellGlue.getThreads(cellName);
}
public ThreadGroup getThreadGroup() { return _threads; }
List<Thread> getThreads() {
return ThreadGroups.threadsInGroup(_threads);
Thread [] getThreads() {
if (_threads == null) {
return new Thread[0];
}

int threadCount = _threads.activeCount();
Thread [] list = new Thread[threadCount];
int rc = _threads.enumerate(list);
if (rc == list.length) {
return list;
}
Thread [] ret = new Thread[rc];
System.arraycopy(list, 0, ret, 0, rc);
return ret;
}

private String getUnique() {
Expand Down
58 changes: 16 additions & 42 deletions modules/cells/src/main/java/dmg/cells/nucleus/CellShell.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,8 @@
import dmg.util.CommandPanicException;
import dmg.util.CommandSyntaxException;
import dmg.util.CommandThrowableException;
import dmg.util.CpuUsage;
import dmg.util.Exceptions;
import dmg.util.Formats;
import dmg.util.FractionalCpuUsage;
import dmg.util.PropertiesBackedReplaceable;
import dmg.util.Replaceable;
import dmg.util.ReplaceableBackedProperties;
Expand All @@ -71,7 +69,6 @@

import org.dcache.util.Args;
import org.dcache.util.ColumnWriter;
import org.dcache.util.ColumnWriter.TabulatedRow;
import org.dcache.util.Glob;

import static dmg.util.CommandException.checkCommand;
Expand Down Expand Up @@ -981,58 +978,33 @@ private void appendWithIndentation(String indentation, String value)
public String call()
{
if (names == null) {
List<String> list = _nucleus.getCellNames();
if (full) {
Map<String,FractionalCpuUsage> cellCpuUsage = CellNucleus.getFractionalCellCpuUsage();

ColumnWriter table = new ColumnWriter().headersInColumns()
List<String> list = _nucleus.getCellNames();
if (full) {
ColumnWriter table = new ColumnWriter().headersInColumns()
.header("Name").left("name").space()
.header("State").centre("state").space()
.header("Queue").right("queue-length").space()
.header("Q-time/ms").right("queue-time").space()
.header("Threads").right("thread").space();
if (!cellCpuUsage.isEmpty()) {
table.header("System CPU").right("system-cpu").space()
.header("User CPU").right("user-cpu").space();
}

table.header("Class").left("class").space()
.header("Threads").right("thread").space()
.header("Class").left("class").space()
.header("Additional info").left("short-info");
for (String name: list) {
CellInfo info = _nucleus.getCellInfo(name);
FractionalCpuUsage cpuUsage = cellCpuUsage.get(name);
if (info == null) {
table.row("name " + name);
} else {
// Work around cells where toString shows only
// the cell name.
String shortInfo = info.getShortInfo().equals(name) ? "" : info.getShortInfo();

TabulatedRow row = table.row().value("name", name)
// Work around cells where toString shows only
// the cell name.
String shortInfo = info.getShortInfo().equals(name) ? "" : info.getShortInfo();
table.row().value("name", name)
.value("state", info.getStateName().substring(0,1))
.value("queue-length", info.getEventQueueSize())
.value("queue-time", info.getExpectedQueueTime())
.value("thread", info.getThreadCount())
.value("class", info.getCellSimpleClass())
.value("short-info", shortInfo);

if (cpuUsage != null) {
String systemUsage = String.format("%.1f%%", cpuUsage.getSystemUsage()*100);
String userUsage = String.format("%.1f%%", cpuUsage.getUserUsage()*100);
row.value("system-cpu", systemUsage)
.value("user-cpu", userUsage);
}
}
}
FractionalCpuUsage unknownUsage = cellCpuUsage.get("UNKNOWN");
if (unknownUsage != null) {
String systemUsage = String.format("%.1f%%", unknownUsage.getSystemUsage()*100);
String userUsage = String.format("%.1f%%", unknownUsage.getUserUsage()*100);
table.row().value("name", "UNKNOWN")
.value("system-cpu", systemUsage)
.value("user-cpu", userUsage);
}

sb.append(table);
} else {
for (String name: list) {
Expand Down Expand Up @@ -1078,11 +1050,13 @@ public String call()
.header("Name").left("name").space()
.header("Priority").right("priority").space()
.header("State").left("state");
_nucleus.getThreads(name).ifPresent(threads -> threads.forEach(t ->
threadsInfo.row().value("name", t.getName())
.value("priority", t.getPriority())
.value("state", (t.isAlive() ? "A" : "-") + (t.isDaemon() ? "D" : "-") + (t.isInterrupted() ? "I" : "-"))
));
Thread[] threads = _nucleus.getThreads(name);
for (int j = 0; j < threads.length && threads[j] != null; j++) {
Thread t = threads [j];
threadsInfo.row().value("name", t.getName())
.value("priority", t.getPriority())
.value("state", (t.isAlive() ? "A" : "-") + (t.isDaemon() ? "D" : "-") + (t.isInterrupted() ? "I" : "-"));
}

sb.append('\n').append(firstIndentation).append("-- Threads --\n").append(threadsInfo);

Expand Down
Loading

0 comments on commit 1c1de5e

Please sign in to comment.