diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-03-31 11:49:07 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-04-02 07:33:46 +0000 |
commit | c73d927144e54ee1067be9793e3abad294f67a4f (patch) | |
tree | 4a42f3fb4cf1f1643ac5f4db1bad56f431ab0f08 | |
parent | b68f583414f4294a67e3a9370e56644470b41e0a (diff) |
ensure consistent offset in logcontrol file
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'; |