nats-io/nats-server · error

processRoutedHeaderMsgArgs Parse Error: '%s'

Error message

processRoutedHeaderMsgArgs Parse Error: '%s'

What it means

processRoutedHeaderMsgArgs splits the route protocol's HMSG-style argument line and hit the len(args) 0-3 case: fewer tokens than the minimal subject [reply] header-size total-size form. The message argument line is malformed/truncated — a protocol-level parse failure on data received over a cluster route connection, not an operator config problem.

Source

Thrown at server/route.go:314

		case ' ', '\t', '\r', '\n':
			if start >= 0 {
				args = append(args, arg[start:i])
				start = -1
			}
		default:
			if start < 0 {
				start = i
			}
		}
	}
	if start >= 0 {
		args = append(args, arg[start:])
	}

	c.pa.arg = arg
	switch len(args) {
	case 0, 1, 2, 3:
		return fmt.Errorf("processRoutedHeaderMsgArgs Parse Error: '%s'", args)
	case 4:
		c.pa.reply = nil
		c.pa.queues = nil
		c.pa.hdb = args[2]
		c.pa.hdr = parseSize(args[2])
		c.pa.szb = args[3]
		c.pa.size = parseSize(args[3])
	case 5:
		c.pa.reply = args[2]
		c.pa.queues = nil
		c.pa.hdb = args[3]
		c.pa.hdr = parseSize(args[3])
		c.pa.szb = args[4]
		c.pa.size = parseSize(args[4])
	default:
		// args[2] is our reply indicator. Should be + or | normally.
		if len(args[2]) != 1 {
			return fmt.Errorf("processRoutedHeaderMsgArgs Bad or Missing Reply Indicator: '%s'", args[2])

View on GitHub (pinned to 3a66a489d2)

Solutions

  1. Check cluster peers run compatible nats-server versions
  2. Verify no proxy/LB is truncating or mangling route connection data
  3. Capture route traffic to inspect the malformed argument line
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/route.go:314 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of nats-io/nats-server@3a66a489d2 (2026-09-02). Data as JSON: /api/errors/8d20c520b7de52d5. Report an issue: GitHub.