summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2018-04-24 11:55:05 +0200
committerGitHub <noreply@github.com>2018-04-24 11:55:05 +0200
commitac3744f95a1f9cbca71ba315c512abbe8ec16abe (patch)
tree2e9b3f7c5f3b51d51c4e61cd6bdbe2e10a3f54c2
parentdbe55af3a7cb92f3c4ff353a09a88dad2dec2ad4 (diff)
Revert "Log when diff too large"
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java19
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/IPTablesEditor.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java25
3 files changed, 27 insertions, 23 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
index 4e5906d3c34..a8e0c64f4e1 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
@@ -5,8 +5,8 @@ import com.yahoo.vespa.hosted.node.admin.task.util.file.LineEdit;
import com.yahoo.vespa.hosted.node.admin.task.util.file.LineEditor;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPVersion;
+import java.util.ArrayList;
import java.util.Arrays;
-import java.util.LinkedList;
import java.util.List;
/**
@@ -14,10 +14,11 @@ import java.util.List;
*/
class FilterTableLineEditor implements LineEditor {
- private final LinkedList<String> wantedRules;
+ private final List<String> wantedRules;
+ private boolean removeRemaining = false;
FilterTableLineEditor(List<String> wantedRules) {
- this.wantedRules = new LinkedList<>(wantedRules);
+ this.wantedRules = new ArrayList<>(wantedRules);
}
static FilterTableLineEditor from(Acl acl, IPVersion ipVersion) {
@@ -27,8 +28,16 @@ class FilterTableLineEditor implements LineEditor {
@Override
public LineEdit edit(String line) {
- String wantedRule = wantedRules.pop();
- return wantedRule.equals(line) ? LineEdit.none() : LineEdit.replaceWith(wantedRule);
+ if (removeRemaining) {
+ return LineEdit.remove();
+ }
+ if (wantedRules.indexOf(line) == 0) {
+ wantedRules.remove(line);
+ return LineEdit.none();
+ } else {
+ removeRemaining = true;
+ return LineEdit.remove();
+ }
}
@Override
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/IPTablesEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/IPTablesEditor.java
index 7b33939398a..af92aa670f7 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/IPTablesEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/IPTablesEditor.java
@@ -22,9 +22,10 @@ import java.util.stream.Collectors;
/**
* Edit the iptables for docker containers.
*/
-class IPTablesEditor {
+public class IPTablesEditor {
+
+ private static final PrefixLogger log = PrefixLogger.getNodeAdminLogger(AclMaintainer.class);
- private final PrefixLogger log;
private final DockerOperations dockerOperations;
private final ContainerName containerName;
private final Consumer<String> testInterceptor;
@@ -37,7 +38,6 @@ class IPTablesEditor {
this.dockerOperations = dockerOperations;
this.containerName = containerName;
this.testInterceptor = testInterceptor;
- this.log = PrefixLogger.getNodeAgentLogger(AclMaintainer.class, containerName);
}
public static boolean editFlushOnError(DockerOperations dockerOperations, ContainerName containerName, IPVersion ipVersion, String table, LineEditor lineEditor) {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
index 7dcae199858..9f5557e5940 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
@@ -7,7 +7,7 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.LinkedList;
+import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
@@ -24,13 +24,12 @@ public class Editor {
private static final Logger logger = Logger.getLogger(Editor.class.getName());
private static final Charset ENCODING = StandardCharsets.UTF_8;
- private static final int MAX_LENGTH = 500;
+ private static int maxLength = 300;
private final Supplier<List<String>> supplier;
private final Consumer<List<String>> consumer;
private final String name;
private final LineEditor editor;
- private int diffSize = 0;
/**
* Read the file which must be encoded in UTF-8, use the LineEditor to edit it,
@@ -61,7 +60,7 @@ public class Editor {
public boolean edit(Consumer<String> logConsumer) {
List<String> lines = supplier.get();
- List<String> newLines = new LinkedList<>();
+ List<String> newLines = new ArrayList<>();
StringBuilder diff = new StringBuilder();
boolean modified = false;
@@ -103,7 +102,7 @@ public class Editor {
return false;
}
- String diffDescription = diffTooLarge() ? ": Diff too large (" + diffSize + ")" : ":\n" + diff.toString();
+ String diffDescription = diffTooLarge(diff) ? "" : ":\n" + diff.toString();
logConsumer.accept("Patching file " + name + diffDescription);
consumer.accept(newLines);
return true;
@@ -113,25 +112,21 @@ public class Editor {
return this.edit(line -> context.recordSystemModification(logger, line));
}
- private void maybeAdd(StringBuilder diff, List<String> lines) {
+ private static void maybeAdd(StringBuilder diff, List<String> lines) {
for (String line : lines) {
- // 2 for '+' and '\n'
- diffSize += 2 + line.length();
- if (!diffTooLarge()) {
+ if (!diffTooLarge(diff)) {
diff.append('+').append(line).append('\n');
}
}
}
- private void maybeRemove(StringBuilder diff, String line) {
- // 2 for '-' and '\n'
- diffSize += 2 + line.length();
- if (!diffTooLarge()) {
+ private static void maybeRemove(StringBuilder diff, String line) {
+ if (!diffTooLarge(diff)) {
diff.append('-').append(line).append('\n');
}
}
- private boolean diffTooLarge() {
- return diffSize > MAX_LENGTH;
+ private static boolean diffTooLarge(StringBuilder diff) {
+ return diff.length() > maxLength;
}
}