t8y2/dbx · error

invalid Hive browserResponseTimeout %q: expected positive se

Error message

invalid Hive browserResponseTimeout %q: expected positive seconds

What it means

The browserResponseTimeout parameter is parsed as an int64 number of seconds and must be strictly positive; a non-numeric, zero, or negative value stops config parsing. The value is later converted to a time.Duration in seconds.

Source

Thrown at agents/drivers/argo-go/config.go:574

	config.RequestTracking = parameterBool(values, "requesttrack")
	if value, exists := firstParameter(values, "cookieauth"); exists {
		config.CookieAuth = !strings.EqualFold(value, "false")
	}
	config.CookieName = firstNonEmpty(parameter(values, "cookiename"), defaultCookieName)
	config.JWT = firstNonEmpty(parameter(values, "jwt"), os.Getenv("JWT"))
	config.BrowserToken = firstNonEmpty(parameter(values, "browsertoken"), parameter(values, "token"))
	config.BrowserClientID = parameter(values, "browserclientidentifier")
	if value := parameter(values, "browserresponseport"); value != "" {
		parsed, err := strconv.Atoi(value)
		if err != nil || parsed < 0 || parsed > 65535 {
			return fmt.Errorf("invalid Hive browserResponsePort %q: expected 0-65535", value)
		}
		config.BrowserResponsePort = parsed
	}
	if value := parameter(values, "browserresponsetimeout"); value != "" {
		parsed, err := strconv.ParseInt(value, 10, 64)
		if err != nil || parsed <= 0 {
			return fmt.Errorf("invalid Hive browserResponseTimeout %q: expected positive seconds", value)
		}
		config.BrowserResponseTimeout = time.Duration(parsed) * time.Second
	}
	config.BrowserDisableSSLCheck = parameterBool(values, "browserdisablesslcheck")
	if strings.EqualFold(config.Auth, "JWT") && config.JWT == "" {
		return errors.New("Hive JWT authentication requires jwt or the JWT environment variable")
	}
	if value := parameter(values, "fetchsize"); value != "" {
		parsed, err := strconv.Atoi(value)
		if err != nil || parsed <= 0 {
			return fmt.Errorf("invalid Hive fetchSize %q: expected a positive integer", value)
		}
		config.FetchSize = parsed
	}
	if value := parameter(values, "sockettimeout"); value != "" {
		parsed, err := strconv.ParseInt(value, 10, 64)
		if err != nil {
			return fmt.Errorf("invalid Hive socketTimeout %q: expected seconds", value)

View on GitHub (pinned to c0390bff16)

Solutions

  1. Provide a plain positive integer of seconds, e.g. browserresponsetimeout=30
  2. Remove the parameter to use the built-in default
  3. Strip duration suffixes ('30s' -> '30') before passing
  4. Validate with strconv.ParseInt and v > 0 in your config layer

Example fix

// before
browserResponseTimeout=30s
// after
browserResponseTimeout=30
Defensive patterns

Strategy: validation

Validate before calling

if v := params.Get("browserresponsetimeout"); v != "" {
    n, err := strconv.ParseInt(v, 10, 64)
    if err != nil || n <= 0 {
        return fmt.Errorf("browserresponsetimeout %q must be positive integer seconds", v)
    }
}

Type guard

func validResponseTimeout(v string) bool {
    n, err := strconv.ParseInt(v, 10, 64)
    return err == nil && n > 0
}

Try / catch

if err := applyHiveParameters(cfg, raw); err != nil {
    if strings.Contains(err.Error(), "browserResponseTimeout") {
        return fmt.Errorf("browserresponsetimeout must be plain positive seconds (e.g. 30): %w", err)
    }
    return err
}

Prevention

When it happens

Trigger: Passing browserresponsetimeout with a non-integer (e.g. '30s', '1.5', '') or a value <= 0 (e.g. 0, -10) in Hive connection parameters.

Common situations: Including Go-style duration units ('30s') in a plain-seconds field, expecting 0 to mean 'default', or negative values copied from retry settings.

Understand the failure class

Related errors


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