gofr-dev/gofr · warning

too large

Error message

too large

What it means

ErrTooLarge is a public sentinel error in the gofr datasource interface package, mirroring os.ErrInvalid/io errors: it indicates a requested read/write or offset value exceeds the maximum supported size. It exists so provider implementations return a consistent error across datasources.

Source

Thrown at pkg/gofr/datasource/interface.go:61

	// OpenFile opens a file using the given flags and the given mode.
	OpenFile(name string, flag int, perm os.FileMode) (File, error)

	// Remove removes a file identified by name, returning an error, if any
	// happens.
	Remove(name string) error

	// RemoveAll removes a directory path and any children it contains. It
	// does not fail if the path does not exist (return nil).
	RemoveAll(path string) error

	// Rename renames a file.
	Rename(oldname, newname string) error
}

var (
	ErrFileClosed        = errors.New("File is closed")
	ErrOutOfRange        = errors.New("out of range")
	ErrTooLarge          = errors.New("too large")
	ErrFileNotFound      = os.ErrNotExist
	ErrFileExists        = os.ErrExist
	ErrDestinationExists = os.ErrExist
)

type FileSystemProvider interface {
	FileSystem

	// UseLogger sets the logger for the FileSystem client.
	UseLogger(logger any)

	// UseMetrics sets the metrics for the FileSystem client.
	UseMetrics(metrics any)

	// Connect establishes a connection to FileSystem and registers metrics using the provided configuration when the client was Created.
	Connect()
}

View on GitHub (pinned to 187eb24962)

Solutions

  1. Cap read/write sizes to a sane maximum before calling
  2. Stream data in chunks instead of one huge read
  3. Validate size fields from untrusted sources

Example fix

// before
buf := make([]byte, declaredLen) // too large
// after
const maxChunk = 1 << 20
buf := make([]byte, min(declaredLen, maxChunk))
Defensive patterns

Strategy: validation

Validate before calling

const maxRead = 1 << 24
if int64(len(buf)) > maxRead {
    return fmt.Errorf("read size %d exceeds max %d", len(buf), maxRead)
}

Type guard

func isTooLarge(err error) bool {
    return errors.Is(err, datasource.ErrTooLarge)
}

Try / catch

_, err := f.Read(buf)
if errors.Is(err, datasource.ErrTooLarge) {
    // chunk the read into smaller pieces
}

Prevention

When it happens

Trigger: Operations requesting sizes or offsets exceeding implementation limits (e.g. reads larger than the allowed max, or offsets overflowing int64 bounds) in datasource file implementations.

Common situations: Allocating huge buffers based on untrusted length headers; files larger than the backend supports; casting sizes that overflow on 32-bit platforms.

Understand the failure class

Background: payload too large / request exceeds maximum size: why libraries cap bytes and how to fix oversize payloads — this error's family across 50 libraries.

Related errors


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