gofr-dev/gofr · critical

influxdb health check failed

Error message

influxdb health check failed

What it means

errHealthCheckFailed is returned by HealthCheck when the datasource's ping/health call to InfluxDB fails or reports the service is not healthy. It signals that the InfluxDB instance is unreachable, misconfigured, or returning a degraded status.

Source

Thrown at pkg/gofr/datasource/influxdb/influxdb.go:55

type HealthInflux struct {
	URL      string
	Token    string
	Username string
	Password string
}

const (
	statusDown = "DOWN"
	statusUp   = "UP"
)

var (
	errEmptyOrganizationName = errors.New("organization name must not be empty")
	errEmptyOrganizationID   = errors.New("organization id must not be empty")
	errEmptyBucketID         = errors.New("bucket id must not be empty")
	errEmptyBucketName       = errors.New("bucket name must not be empty")
	errFetchOrganization     = errors.New("failed to fetch all organizations")
	errHealthCheckFailed     = errors.New("influxdb health check failed")
)

// CreateOrganization creates a new organization in InfluxDB with the specified name.
// It implements the container.InfluxDBProvider interface.
//
// Parameters:
// - ctx: Context for request cancellation and timeouts.
// - orgName: The name of the organization to be created. Must not be empty.
//
// Returns:
// - string: The ID of the newly created organization.
// - error: Error if organization creation fails or if orgName is empty.
func (c *Client) CreateOrganization(ctx context.Context, orgName string) (string, error) {
	if orgName == "" {
		return "", errEmptyOrganizationName
	}

	tracedCtx, span := c.addTrace(ctx, "create-organization", "")

View on GitHub (pinned to 187eb24962)

Solutions

  1. Confirm InfluxDB is running and reachable at the configured address
  2. Check health endpoint / container logs of InfluxDB
  3. Verify datasource config (URL, token, org)
  4. Gate app readiness on HealthCheck succeeding, with retries during startup

Example fix

// before
status := client.HealthCheck(ctx) // "influxdb health check failed"
// after
if err != nil {
    logger.Errorf("influx unhealthy, retrying: %v", err)
    time.Sleep(2 * time.Second)
    status = client.HealthCheck(ctx)
}
Defensive patterns

Strategy: retry

Validate before calling

// readiness gate
for i := 0; i < 5; i++ {
    if client.HealthCheck(ctx) == nil {
        break
    }
    time.Sleep(2 * time.Second)
}

Try / catch

if err := client.HealthCheck(ctx); err != nil {
    // err is influxdb health check failed
    logger.Errorf("influx unhealthy: %v", err)
    return retryAfter(backoff)
}

Prevention

When it happens

Trigger: HealthCheck(ctx) when the InfluxDB ping errors or the returned status is not UP.

Common situations: InfluxDB down or restarting; wrong host/port in config; credentials or TLS misconfigured; monitoring systems flagging the datasource as unhealthy during startup before InfluxDB is ready.

Related errors


AI-assisted analysis of gofr-dev/gofr@187eb24962 (2026-09-01). Data as JSON: /api/errors/41ca7ce639668f66. Report an issue: GitHub.