summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-10-17 08:39:53 +0200
committerHarald Musum <musum@yahooinc.com>2022-10-17 08:40:46 +0200
commit08d13bef3a30a49c280421cf6688bc80989eb349 (patch)
tree8acac9a68faff892d4df1f2d2573cd7d7eca7bd0
parent682be49b09b9b5d2585c79f62d75305daa8054bd (diff)
Rename to serialize and deserialize, use Slime everywhere
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java34
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/Spooler.java6
3 files changed, 16 insertions, 26 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java b/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
index f5d8c31be5d..7602b9d53e7 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
@@ -15,7 +15,7 @@ public class LocalDiskLogger extends AbstractThreadedLogger {
@Override
boolean transport(LoggerEntry entry) {
- String json = entry.toJson();
+ String json = entry.serialize();
try (FileWriter fw = new FileWriter(logFilePath, true)) {
fw.write(json);
fw.write(System.getProperty("line.separator"));
diff --git a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
index 69f37226dae..e02bb8da8c0 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
@@ -2,14 +2,11 @@
package com.yahoo.search.logging;
-import com.fasterxml.jackson.core.JsonEncoding;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonGenerator;
import com.yahoo.search.Query;
-import com.yahoo.slime.JsonDecoder;
+import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import com.yahoo.text.Utf8;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.ByteBuffer;
@@ -53,33 +50,26 @@ public class LoggerEntry {
}
public String toString() {
- return toJson();
+ return serialize();
}
- public String toJson() {
+ public String serialize() {
try {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- JsonGenerator g = new JsonFactory().createGenerator(out, JsonEncoding.UTF8);
- g.writeStartObject();
+ Slime slime = new Slime();
+ Cursor root = slime.setObject();
- g.writeNumberField("timestamp", timestamp == null ? 0 : timestamp);
- g.writeStringField("query", queryString());
- g.writeStringField("blob", Base64.getEncoder().encodeToString(blob.array()));
-
- g.writeEndObject();
- g.close();
- return out.toString();
+ root.setLong("timestamp", timestamp == null ? 0 : timestamp);
+ root.setString("query", queryString());
+ root.setString("blob", Base64.getEncoder().encodeToString(blob.array()));
+ return Utf8.toString(SlimeUtils.toJsonBytes(slime)); // TODO
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
- // TODO: Rename method here and above? (serialize/deserialize)
- // TODO: Use Slime or Jackson for both
- public static LoggerEntry fromJson(String content) throws IOException {
- var decoder = new JsonDecoder();
- var slime = decoder.decode(new Slime(), Utf8.toBytes(content));
+ public static LoggerEntry deserialize(String content) throws IOException {
+ var slime = SlimeUtils.jsonToSlime(content);
var timestamp = slime.get().field("timestamp").asLong();
var query = new Query(slime.get().field("query").asString());
diff --git a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
index 5533320c907..2193d414458 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
@@ -89,7 +89,7 @@ public class Spooler {
try {
List<String> lines = Files.readAllLines(f.toPath());
for (String line : lines) {
- LoggerEntry entry = LoggerEntry.fromJson(line);
+ LoggerEntry entry = LoggerEntry.deserialize(line);
log.log(Level.FINE, "Read entry " + entry + " from " + f);
succcess = transport.apply(entry);
if (! succcess) {
@@ -142,8 +142,8 @@ public class Spooler {
String fileName = String.valueOf(fileCounter);
Path file = spoolPath.resolve(processingPath).resolve(fileName);
try {
- log.log(Level.INFO, "Writing entry " + entryCounter.get() + " (" + entry.toJson() + ") to " + fileName);
- Files.writeString(file, entry.toJson() + "\n", StandardOpenOption.WRITE, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
+ log.log(Level.FINE, "Writing entry " + entryCounter.get() + " (" + entry.serialize() + ") to file " + fileName);
+ Files.writeString(file, entry.serialize() + "\n", StandardOpenOption.WRITE, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
Path target = spoolPath.resolve(readyPath).resolve(file.relativize(file)).resolve(fileName);
if (entryCounter.incrementAndGet() > maxEntriesPerFile) {