aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2020-03-31 11:49:07 +0000
committerArne Juul <arnej@verizonmedia.com>2020-04-02 07:33:46 +0000
commitc73d927144e54ee1067be9793e3abad294f67a4f (patch)
tree4a42f3fb4cf1f1643ac5f4db1bad56f431ab0f08
parentb68f583414f4294a67e3a9370e56644470b41e0a (diff)
ensure consistent offset in logcontrol file
-rw-r--r--vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java6
-rw-r--r--vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java10
-rw-r--r--vespalog/src/vespa/log/control-file.cpp2
3 files changed, 10 insertions, 8 deletions
diff --git a/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java b/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
index 85d92075827..3fe4c50c8e2 100644
--- a/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
+++ b/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
@@ -116,17 +116,17 @@ public class VespaLevelControllerRepo implements LevelControllerRepo {
ctlFile.writeBytes(appPrefix);
}
ctlFile.writeBytes("\n");
- for (int i = appLen; i < maxPrefix; i++) {
+ for (int i = appLen; i < maxPrefix + 2; i++) {
byte space = ' ';
ctlFile.write(space);
}
ctlFile.writeBytes("\n");
ctlFile.setLength(ctlFile.getFilePointer());
- if (ctlFile.getFilePointer() != controlFileHeaderLength) {
+ if (ctlFile.getFilePointer() != (controlFileHeaderLength + 2)) {
System.err.println("internal error, bad header length: "
+ ctlFile.getFilePointer()
+ " (should have been: "
- + controlFileHeaderLength
+ + (controlFileHeaderLength + 2)
+ ")");
}
}
diff --git a/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java b/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
index 3bd4de03f4e..9d04e079f55 100644
--- a/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
@@ -62,12 +62,14 @@ public class VespaLevelControllerRepoTest {
RandomAccessFile lcfile = new RandomAccessFile(lcf, "rw");
- lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength);
+ lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength+1);
+ assertEquals(lcfile.readByte(), '\n');
+ lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength+2);
assertEquals(lcfile.readByte(), 'd');
- lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength + 7);
+ lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength+2 + 7);
assertEquals(lcfile.readByte(), ':');
- assertEquals(0, (VespaLevelControllerRepo.controlFileHeaderLength+9) % 4);
- lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength + 9);
+ assertEquals(0, (VespaLevelControllerRepo.controlFileHeaderLength+13) % 4);
+ lcfile.seek(VespaLevelControllerRepo.controlFileHeaderLength + 13);
assertEquals(0x20204f4e, lcfile.readInt());
int off = findControlString(lcfile, "com.yahoo.log.test");
diff --git a/vespalog/src/vespa/log/control-file.cpp b/vespalog/src/vespa/log/control-file.cpp
index 4a4fd36e0ac..a4fe9e98b8d 100644
--- a/vespalog/src/vespa/log/control-file.cpp
+++ b/vespalog/src/vespa/log/control-file.cpp
@@ -69,7 +69,7 @@ ControlFile::ensureHeader()
perror("log::ControlFile write(A) failed");
}
- char spaces[_maxPrefix + 1];
+ char spaces[_maxPrefix + 3];
memset(spaces, ' ', sizeof spaces);
spaces[sizeof(spaces) - 1] = '\0';