dgraph-io/dgraph · error

while trying to parse secrets from schema file

Error message

while trying to parse secrets from schema file

What it means

While scanning the GraphQL schema line by line for Dgraph.Secret comments, the underlying bufio.Scanner returned a non-EOF error (e.g. I/O failure reading the schema). parseMetaInfo wraps it with this message.

Source

Thrown at graphql/schema/schemagen.go:260

			if len(parts) < 4 {
				return nil, errors.Errorf("incorrect format for specifying Dgraph secret found for "+
					"comment: `%s`, it should be `# Dgraph.Secret key value`", text)
			}
			val := strings.Join(parts[3:], " ")
			if strings.Count(val, `"`) != 2 || val[0] != doubleQuotesCode || val[len(val)-1] != doubleQuotesCode {
				return nil, errors.Errorf("incorrect format for specifying Dgraph secret found for "+
					"comment: `%s`, it should be `# Dgraph.Secret key value`", text)
			}

			val = strings.Trim(val, `"`)
			key := strings.Trim(parts[2], `"`)
			// lets obfuscate the value of the secrets from here on.
			schMetaInfo.secrets[key] = x.Sensitive(val)
		}
	}

	if err = scanner.Err(); err != nil {
		return nil, errors.Wrapf(err, "while trying to parse secrets from schema file")
	}

	if authSecret != "" {
		schMetaInfo.authMeta, err = authorization.ParseAuthMeta(authSecret)
		if err != nil {
			return nil, err
		}
	}

	return schMetaInfo, nil
}

// NewHandler processes the input schema. If there are no errors, it returns
// a valid Handler, otherwise it returns nil and an error.
func NewHandler(input string, apolloServiceQuery bool) (Handler, error) {
	if input == "" {
		return nil, gqlerror.Errorf("No schema specified")
	}

View on GitHub (pinned to 759e242be6)

Solutions

  1. Check the wrapped `err` in the message for the root I/O cause
  2. Verify the schema file/reader is readable and not closed
  3. Re-read the schema or retry the handler creation after fixing I/O
Defensive patterns

Strategy: try-catch

Validate before calling

f, err := os.Open(schemaPath)
if err != nil { /* fail fast before NewHandler */ }

Try / catch

info, err := graphql.NewHandler(...)
if err != nil {
	if strings.Contains(err.Error(), "while trying to parse secrets") {
		log.Errorf("schema I/O failed: %v", err) // inspect wrapped cause
	}
	return err
}

Prevention

When it happens

Trigger: NewHandler where reading the schema input stream fails mid-scan — disk I/O error, closed reader, or a Reader returning an error other than io.EOF.

Common situations: Reading schema from a file that becomes unreadable mid-read; a custom io.Reader implementation erroring; network/piped input interrupted.

Related errors


AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01). Data as JSON: /api/errors/60ce4820091b2b18. Report an issue: GitHub.