summaryrefslogtreecommitdiffstats
path: root/logserver
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-03-19 16:20:12 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-03-19 16:31:04 +0100
commitecbe2d4b1b84a9c5db3a3bc34eeeca34e0800499 (patch)
tree36a2c908c7ca70ecd83f93f596a045ac18d132d8 /logserver
parentb4cd90dcdc1ef5c4ccb0b138a3727749c9d647f5 (diff)
Stop sending default state to logd
Configuration of default state through system property is not documented, and the configuration is ignored by logd.
Diffstat (limited to 'logserver')
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/Server.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/net/LogConnection.java75
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/net/LogConnectionFactory.java13
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/net/control/Levels.java125
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/net/control/State.java54
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/handlers/replicator/ReplicatorTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/net/control/test/LevelsTestCase.java91
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java2
8 files changed, 18 insertions, 346 deletions
diff --git a/logserver/src/main/java/com/yahoo/logserver/Server.java b/logserver/src/main/java/com/yahoo/logserver/Server.java
index d0df5bf2972..db01444ca67 100644
--- a/logserver/src/main/java/com/yahoo/logserver/Server.java
+++ b/logserver/src/main/java/com/yahoo/logserver/Server.java
@@ -9,7 +9,6 @@ import com.yahoo.log.event.Event;
import com.yahoo.logserver.handlers.HandlerThread;
import com.yahoo.logserver.handlers.LogHandler;
import com.yahoo.logserver.net.LogConnectionFactory;
-import com.yahoo.logserver.net.control.Levels;
import com.yahoo.yolean.system.CatchSignals;
import java.io.IOException;
@@ -179,7 +178,6 @@ public class Server implements Runnable {
System.out.println("System properties:");
System.out.println(" - " + APPNAME + ".listenport (" + LISTEN_PORT + ")");
System.out.println(" - " + APPNAME + ".queue.size (" + HandlerThread.DEFAULT_QUEUESIZE + ")");
- System.out.println(" - logserver.default.loglevels (" + (new Levels()).toString() + ")");
System.out.println();
}
diff --git a/logserver/src/main/java/com/yahoo/logserver/net/LogConnection.java b/logserver/src/main/java/com/yahoo/logserver/net/LogConnection.java
index 7e1ae5c60ae..1a9221b82a7 100644
--- a/logserver/src/main/java/com/yahoo/logserver/net/LogConnection.java
+++ b/logserver/src/main/java/com/yahoo/logserver/net/LogConnection.java
@@ -1,28 +1,23 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.net;
-import com.yahoo.log.LogLevel;
-import com.yahoo.logserver.LogDispatcher;
-import com.yahoo.log.LogMessage;
-import com.yahoo.log.InvalidLogFormatException;
-
import com.yahoo.io.Connection;
import com.yahoo.io.Listener;
import com.yahoo.io.ReadLine;
-
-import com.yahoo.logserver.net.control.Levels;
+import com.yahoo.log.InvalidLogFormatException;
+import com.yahoo.log.LogLevel;
+import com.yahoo.log.LogMessage;
+import com.yahoo.logserver.LogDispatcher;
import java.io.IOException;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.HashSet;
-
-import java.nio.charset.Charset;
import java.nio.ByteBuffer;
-import java.nio.channels.SocketChannel;
import java.nio.channels.SelectionKey;
+import java.nio.channels.SocketChannel;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* TODO
@@ -39,8 +34,6 @@ public class LogConnection implements Connection {
public static final int READBUFFER_SIZE = (32 * 1024);
- static private final Charset charset = Charset.forName("utf-8");
-
// the set of active connections
private static final Set<LogConnection> activeConnections = new HashSet<>();
@@ -57,44 +50,15 @@ public class LogConnection implements Connection {
private long totalBytesRead = 0;
private long totalBytesWritten = 0;
- // default log levels for logd
- final Levels defaultLevels;
-
- public LogConnection (SocketChannel socket,
- Listener listener,
- LogDispatcher dispatcher,
- Levels defaultLevels) {
+ public LogConnection(SocketChannel socket,
+ Listener listener,
+ LogDispatcher dispatcher) {
this.socket = socket;
this.listener = listener;
this.dispatcher = dispatcher;
- this.defaultLevels = defaultLevels;
addToActiveSet(this);
- // send the "setdefaultstate" command to logd. no better
- // place to put it for now.
- sendDefaultState();
- }
-
- /**
- * Send the default state to the
- */
- public void sendDefaultState () {
- if (defaultLevels == null) {
- return;
- }
-
- try {
- enqueue(charset.encode("setdefaultstate "
- + defaultLevels.toString()
- + "\n"));
- enqueue(charset.encode("setallstates "
- + defaultLevels.toString()
- + "\n"));
- }
- catch (IOException e) {
- log.log(LogLevel.WARNING, "Unable to send default state", e);
- }
}
/**
@@ -148,19 +112,6 @@ public class LogConnection implements Connection {
}
}
- /**
- *
- */
- public synchronized void enqueue (ByteBuffer buffer) throws IOException {
- if (writeBuffer == null) {
- writeBuffer = buffer;
- } else {
- writeBufferList.addLast(buffer);
- listener.modifyInterestOps(this, SelectionKey.OP_WRITE, true);
- }
- write();
- }
-
public void connect () throws IOException {
throw new RuntimeException("connect() is not supposed to be called");
}
diff --git a/logserver/src/main/java/com/yahoo/logserver/net/LogConnectionFactory.java b/logserver/src/main/java/com/yahoo/logserver/net/LogConnectionFactory.java
index 148cceffb42..7ef6f7bb942 100644
--- a/logserver/src/main/java/com/yahoo/logserver/net/LogConnectionFactory.java
+++ b/logserver/src/main/java/com/yahoo/logserver/net/LogConnectionFactory.java
@@ -1,16 +1,14 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.net;
-import com.yahoo.logserver.LogDispatcher;
import com.yahoo.io.Connection;
-import com.yahoo.io.Listener;
import com.yahoo.io.ConnectionFactory;
+import com.yahoo.io.Listener;
+import com.yahoo.logserver.LogDispatcher;
-import com.yahoo.logserver.net.control.Levels;
-
+import java.nio.channels.SocketChannel;
import java.util.logging.Level;
import java.util.logging.Logger;
-import java.nio.channels.SocketChannel;
/**
* @author Bjorn Borud
@@ -19,11 +17,9 @@ public class LogConnectionFactory implements ConnectionFactory {
private static final Logger log = Logger.getLogger(LogConnectionFactory.class.getName());
private final LogDispatcher dispatcher;
- private final Levels defaultLogLevels;
public LogConnectionFactory(LogDispatcher dispatcher) {
this.dispatcher = dispatcher;
- defaultLogLevels = Levels.parse(System.getProperty("logserver.default.loglevels", ""));
}
public Connection newConnection(SocketChannel socket, Listener listener) {
@@ -32,7 +28,6 @@ public class LogConnectionFactory implements ConnectionFactory {
}
return new LogConnection(socket,
listener,
- dispatcher,
- (Levels) defaultLogLevels.clone());
+ dispatcher);
}
}
diff --git a/logserver/src/main/java/com/yahoo/logserver/net/control/Levels.java b/logserver/src/main/java/com/yahoo/logserver/net/control/Levels.java
deleted file mode 100644
index 794177c37e7..00000000000
--- a/logserver/src/main/java/com/yahoo/logserver/net/control/Levels.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.logserver.net.control;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * This class is used to represent the state of each log level
- * in a set of states.
- *
- * @author Bjorn Borud
- */
-public class Levels implements Cloneable {
- private final Map<String, State> levelsMap = new LinkedHashMap<String, State>(10);
-
- /**
- * The constructor initializes the Levels object to its default
- * state.
- */
- public Levels () {
- levelsMap.put("event", State.FORWARD);
- levelsMap.put("fatal", State.FORWARD);
- levelsMap.put("error", State.FORWARD);
- levelsMap.put("warning", State.FORWARD);
- levelsMap.put("info", State.FORWARD);
- levelsMap.put("config", State.FORWARD);
- levelsMap.put("debug", State.NOFORWARD);
- levelsMap.put("spam", State.NOFORWARD);
- }
-
- /**
- * Parse a levels representation and return a Levels object
- * representing the levels.
- *
- * @param levels A string representation of the levels
- * @return new instance of Levels, possibly having no
- * real values if none could be found in the
- * <code>levels</code> parameter.
- *
- */
- public static Levels parse (String levels) {
- return (new Levels()).updateLevels(levels);
- }
-
-
- /**
- * Update the levels given a string representation of the state;
- * the levels mentioned here will be updated, the ones omitted
- * will retain their state as before the function call.
- *
- * @param levels string representation of levels
- *
- */
- public Levels updateLevels (String levels) {
- String[] parts = levels.split(",");
- if (parts.length < 1) {
- return this;
- }
-
- for (int i = 0; i < parts.length; i++) {
- String pair = parts[i];
- int offset = pair.indexOf('=');
- if (offset != -1) {
- String name = pair.substring(0,offset).trim().toLowerCase();
- String value = pair.substring(offset+1).trim().toLowerCase();
- setLevelState(name, State.parse(value));
- }
- }
- return this;
- }
-
-
- /**
- * Set the state of a given level.
- *
- * @param level name of the level
- * @param state the state
- * @return returns reference to <code>this</code> for chaning
- */
- public Levels setLevelState(String level, State state) {
- levelsMap.put(level, state);
- return this;
- }
-
- /**
- * Get the state of a given level.
- *
- */
- public State getLevelState (String level) {
- State s = levelsMap.get(level);
- if (s == null) {
- return State.UNKNOWN;
- }
- return s;
- }
-
- /**
- * For equivalent configurations the toString method should
- * emit equal strings.
- *
- */
- public String toString () {
- StringBuilder sbuf = new StringBuilder(80);
- boolean first = true;
- for (Map.Entry<String, State> me : levelsMap.entrySet()) {
- // commas between
- if (!first) {
- sbuf.append(',');
- } else {
- first = false;
- }
- sbuf.append(me.getKey())
- .append('=')
- .append(me.getValue());
- }
-
- return sbuf.toString();
- }
-
- public Object clone() {
- // quick and dirty, but easily verifiable to be correct
- return parse(this.toString());
- }
-
-}
diff --git a/logserver/src/main/java/com/yahoo/logserver/net/control/State.java b/logserver/src/main/java/com/yahoo/logserver/net/control/State.java
deleted file mode 100644
index 721c146bdb1..00000000000
--- a/logserver/src/main/java/com/yahoo/logserver/net/control/State.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.logserver.net.control;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * This value class represents the logging state of a component.
- * the valid states are:
- *
- * <UL>
- * <LI> forward - store locally and send to log server
- * <LI> store - store locally only
- * <LI> noforward - do not send to logserver
- * <LI> off - do not generate the message in the program
- * </UL>
- *
- * XXX This does not appear to be in use.
- */
-public class State {
- private static final Map<String, State> nameToState = new HashMap<String, State>();
-
- public static final State FORWARD = new State("forward");
- public static final State NOFORWARD = new State("noforward");
- // public static final State STORE = new State("store");
- // public static final State OFF = new State("off");
- public static final State UNKNOWN = new State("unknown");
-
- private String name;
-
- /**
- * Typesafe enum. Only able to instantiate self.
- * TODO: Rewrite to enum
- */
- private State () {}
-
- /**
- * Creates state with given name
- */
- private State (String name) {
- this.name = name;
- synchronized (State.class) {
- nameToState.put(name, this);
- }
- }
-
- public static State parse (String s) {
- return nameToState.containsKey(s) ? nameToState.get(s) : UNKNOWN;
- }
-
- public String toString () {
- return name;
- }
-}
diff --git a/logserver/src/test/java/com/yahoo/logserver/handlers/replicator/ReplicatorTestCase.java b/logserver/src/test/java/com/yahoo/logserver/handlers/replicator/ReplicatorTestCase.java
index a50e775d487..b26c6236dbb 100644
--- a/logserver/src/test/java/com/yahoo/logserver/handlers/replicator/ReplicatorTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/handlers/replicator/ReplicatorTestCase.java
@@ -72,8 +72,6 @@ public class ReplicatorTestCase {
assertFalse(conn.isLoggable(msg));
assertEquals("system.mute", conn.getLogFilterName());
replicator.doHandle(msg);
- conn.read();
- assertEquals(2, conn.getNumHandled());
conn.onFormatter("system.textformatter");
assertEquals(conn.formatter, LogFormatterManager.getLogFormatter("system.textformatter"));
conn.onCommand("formatter system.nullformatter");
diff --git a/logserver/src/test/java/com/yahoo/logserver/net/control/test/LevelsTestCase.java b/logserver/src/test/java/com/yahoo/logserver/net/control/test/LevelsTestCase.java
deleted file mode 100644
index 03dcf5566e3..00000000000
--- a/logserver/src/test/java/com/yahoo/logserver/net/control/test/LevelsTestCase.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.logserver.net.control.test;
-
-import com.yahoo.logserver.net.control.Levels;
-import com.yahoo.logserver.net.control.State;
-
-import org.junit.*;
-
-import static org.junit.Assert.*;
-
-/**
- * @author Bjorn Borud
- */
-public class LevelsTestCase {
- /**
- * Make sure the parsing works
- */
- @Test
- public void testParser() {
- Levels levels = Levels.parse("fatal=forward,error=forward,warning=noforward");
- assertNotNull(levels);
- assertSame(State.FORWARD, levels.getLevelState("fatal"));
- assertSame(State.FORWARD, levels.getLevelState("error"));
- assertSame(State.NOFORWARD, levels.getLevelState("warning"));
- }
-
- /**
- * Ensure that the Levels are in a known default state. A Levels
- * object that was newly created is in a defined default state
- * which has been deemed to be "reasonable". In general, it will
- * specify forwarding all log levels except "debug" and it will
- * specify "spam" to be turned off.
- */
- @Test
- public void testDefaultLevels() {
- Levels levels = new Levels();
- assertSame(State.FORWARD, levels.getLevelState("event"));
- assertSame(State.FORWARD, levels.getLevelState("fatal"));
- assertSame(State.FORWARD, levels.getLevelState("error"));
- assertSame(State.FORWARD, levels.getLevelState("warning"));
- assertSame(State.FORWARD, levels.getLevelState("info"));
- assertSame(State.FORWARD, levels.getLevelState("config"));
- assertSame(State.NOFORWARD, levels.getLevelState("debug"));
- assertSame(State.NOFORWARD, levels.getLevelState("spam"));
- }
-
- /**
- * This test also documents/verifies the default behavior
- * of the Levels class.
- */
- @Test
- public void testToString() {
- String in = "fatal=forward,error=forward,warning=noforward";
- String out = "event=forward,fatal=forward,error=forward,warning=noforward,info=forward,config=forward,debug=noforward,spam=noforward";
- Levels levels = Levels.parse(in);
- assertEquals(out, levels.toString());
-
- }
-
- /**
- * Clone testing
- */
- @Test
- public void testClone() {
- Levels l1 = Levels.parse("error=noforward");
- assertEquals(l1.toString(), l1.clone().toString());
- assertSame(State.NOFORWARD, l1.getLevelState("error"));
- assertSame(State.NOFORWARD, ((Levels) l1.clone()).getLevelState("error"));
- assertSame(l1.getLevelState("error"),
- ((Levels) l1.clone()).getLevelState("error"));
- }
-
- /**
- * test parser
- */
- @Test
- public void testUpdateLevels() {
- Levels l1 = Levels.parse("error=noforward");
- assertSame(State.NOFORWARD, l1.getLevelState("error"));
-
- // should be unaffected
- assertSame(State.FORWARD, l1.getLevelState("warning"));
-
- // update and check that the update worked
- l1.updateLevels("error=noforward");
- assertSame(State.NOFORWARD, l1.getLevelState("error"));
-
- // should be unaffected
- assertSame(State.FORWARD, l1.getLevelState("warning"));
- }
-}
diff --git a/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java b/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java
index 6d1ab45959c..799de5ac8c6 100644
--- a/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java
@@ -150,7 +150,7 @@ public class LogConnectionTestCase {
assertTrue(mock.getName().endsWith("MockHandler"));
dispatcher.registerLogHandler(mock);
LogConnection logConnection =
- new LogConnection(sock, null, dispatcher, null);
+ new LogConnection(sock, null, dispatcher);
try {
for (int i = 0; i < 100; i++) {