t8y2/dbx · error

${response.Error.Message}

Error message

${response.Error.Message}

What it means

The agent-process JSON-RPC client surfaced the error message returned by the agent itself: when response.Error is non-null, call() wraps its Message in a plain Go error. This is a remote-side failure (agent method returned a JSON-RPC error object), not a local transport failure — transport and id-matching problems raise different errors.

Source

Thrown at agents/drivers/rabbitmq/bench/agent_compare.go:359

	payload, err := json.Marshal(request)
	if err != nil {
		return nil, err
	}
	if _, err := process.stdin.Write(append(payload, '\n')); err != nil {
		return nil, err
	}
	if !process.reader.Scan() {
		return nil, fmt.Errorf("agent response unavailable: %v", process.reader.Err())
	}
	var response agentResponse
	if err := json.Unmarshal(process.reader.Bytes(), &response); err != nil {
		return nil, err
	}
	if response.ID != process.nextID {
		return nil, fmt.Errorf("response id %d does not match request id %d", response.ID, process.nextID)
	}
	if response.Error != nil {
		return nil, errors.New(response.Error.Message)
	}
	return response.Result, nil
}

func (process *agentProcess) close() error {
	_, callError := process.call("shutdown", map[string]any{})
	_ = process.stdin.Close()
	waitError := process.command.Wait()
	if callError != nil {
		return callError
	}
	return waitError
}

func (process *agentProcess) kill() {
	if process != nil && process.command != nil && process.command.Process != nil {
		_ = process.command.Process.Kill()
		_, _ = process.command.Process.Wait()

View on GitHub (pinned to c0390bff16)

Solutions

  1. Read the surfaced message — it comes from the agent — and fix the offending call (method name, params) on the client side.
  2. Verify client and agent versions match and that the RPC method exists in the agent's handler registry.
  3. Log response.Error.Code alongside Message (extend call() to return both) to pinpoint the agent-side failure class.

Example fix

// before
if response.Error != nil {
    return nil, errors.New(response.Error.Message)
}
// after
if response.Error != nil {
    return nil, fmt.Errorf("rpc error (code %d): %s", response.Error.Code, response.Error.Message)
}
Defensive patterns

Strategy: try-catch

Try / catch

result, err := process.call("shutdown", map[string]any{})
if err != nil {
    if strings.Contains(err.Error(), "rpc error") {
        log.Printf("agent rejected call: %v", err)
        return nil // treat as agent-side failure, not transport
    }
    return err
}

Prevention

When it happens

Trigger: Any JSON-RPC call to the agent process (e.g. process.call("shutdown", ...)) where the agent replies with {"error": {"message": "..."}}, such as unknown method, invalid params, or an internal agent failure.

Common situations: Calling a method the agent does not implement; passing wrong-shaped params; the agent crashing mid-request and its framework emitting an error response; version mismatch where the bench expects a method the agent no longer exposes.

Related errors


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/dfef8aa54bea9690. Report an issue: GitHub.