summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-06-29 12:23:20 +0300
committerPaul Buetow <paul@buetow.org>2025-06-29 12:23:20 +0300
commitaa7e7afebf2bb65fb5a86183bd1f7190d6502b4d (patch)
tree967c4570a181a0ac9904e3906ebb3a685ef02539 /internal
parent0aa3222cef46d527bb9437afa9ddd90f3a80a9d8 (diff)
fix: resolve dcat test failures with channel-less implementation
- Fix serverless mode extra blank lines by removing DTail 3 backward compatibility fallthrough for '\n' character - Fix empty line handling in client message processing - Update integration test framework to inherit environment variables, allowing turbo boost testing - Clean up debug logging code Note: dcat1d.txt test fails because DTail adds newline to files without trailing newlines - this is a protocol limitation where newlines are stripped during transmission and re-added by the client. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'internal')
-rw-r--r--internal/clients/handlers/basehandler.go12
-rw-r--r--internal/server/handlers/readcommand.go2
2 files changed, 7 insertions, 7 deletions
diff --git a/internal/clients/handlers/basehandler.go b/internal/clients/handlers/basehandler.go
index d1f0bb5..1a500dc 100644
--- a/internal/clients/handlers/basehandler.go
+++ b/internal/clients/handlers/basehandler.go
@@ -61,10 +61,8 @@ func (h *baseHandler) Write(p []byte) (n int, err error) {
for _, b := range p {
switch b {
case '\n':
- // Backwards compatible with DTail 3 (e.g. get error message from server
- // about protocol missmatch.
+ // Just add the newline to the buffer, don't treat as message delimiter
h.receiveBuf.WriteByte(b)
- fallthrough
case protocol.MessageDelimiter:
message := h.receiveBuf.String()
h.handleMessage(message)
@@ -93,11 +91,11 @@ func (h *baseHandler) handleMessage(message string) {
return
}
- // Only add newline if message doesn't already end with one
- if len(message) > 0 && message[len(message)-1] != '\n' {
- dlog.Client.Raw(message + "\n")
- } else {
+ // Add newline only if the message doesn't already end with one
+ if len(message) > 0 && message[len(message)-1] == '\n' {
dlog.Client.Raw(message)
+ } else {
+ dlog.Client.Raw(message + "\n")
}
}
diff --git a/internal/server/handlers/readcommand.go b/internal/server/handlers/readcommand.go
index abdbe9c..23c3175 100644
--- a/internal/server/handlers/readcommand.go
+++ b/internal/server/handlers/readcommand.go
@@ -53,6 +53,7 @@ func (r *readCommand) Start(ctx context.Context, ltx lcontext.LContext,
// e.g.: grep foo bar.log | dmap 'from STATS select ...'
// Only read from pipe if no file argument is provided
isPipe := r.isInputFromPipe() && (argc < 2 || args[1] == "" || args[1] == "-")
+
if isPipe {
dlog.Server.Debug("Reading data from stdin pipe")
// Empty file path and globID "-" represents reading from the stdin pipe.
@@ -212,6 +213,7 @@ func (r *readCommand) readWithProcessor(ctx context.Context, ltx lcontext.LConte
path, globID string, re regex.Regex, reader fs.FileReader) {
dlog.Server.Info(r.server.user, "Using channel-less grep implementation", path, globID)
+
// Use the existing lines channel but with the processor-based reader
lines := r.server.lines