kataras/iris · error
directoryPath is empty
Error message
directoryPath is empty
What it means
The Badger session database's New constructor validates that the directoryPath argument is non-empty and returns this error before opening the store. Badger needs a filesystem directory in which to store its LSM/SST files, so an empty path is rejected immediately.
Source
Thrown at sessions/sessiondb/badger/database.go:45
// it's initialized at `New` or `NewFromDB`.
// Can be used to get stats.
Service *badger.DB
logger *golog.Logger
closed uint32 // if 1 is closed.
}
var _ sessions.Database = (*Database)(nil)
// New creates and returns a new badger(key-value file-based) storage
// instance based on the "directoryPath".
// DirectoryPath should is the directory which the badger database will store the sessions,
// i.e ./sessions
//
// It will remove any old session files.
func New(directoryPath string) (*Database, error) {
if directoryPath == "" {
return nil, errors.New("directoryPath is empty")
}
lindex := directoryPath[len(directoryPath)-1]
if lindex != os.PathSeparator && lindex != '/' {
directoryPath += string(os.PathSeparator)
}
// create directories if necessary
if err := os.MkdirAll(directoryPath, os.FileMode(DefaultFileMode)); err != nil {
return nil, err
}
opts := badger.DefaultOptions(directoryPath)
badgerLogger := context.DefaultLogger("sessionsdb.badger").DisableNewLine()
opts.Logger = badgerLogger
service, err := badger.Open(opts)
if err != nil {
badgerLogger.Errorf("unable to initialize the badger-based session database: %v\n", err)View on GitHub (pinned to 7bedaf55a0)
Solutions
- Pass a valid directory path, e.g. badger.New("./sessions/").
- Load the path from configuration and fail fast at startup if empty.
- Create the directory beforehand or rely on the constructor (badger creates it) but always supply it.
Example fix
// before
db, err := badger.New("") // error: directoryPath is empty
// after
db, err := badger.New("./sessions/") Defensive patterns
Strategy: validation
Validate before calling
if os.Getenv("SESSION_BADGER_DIR") == "" {
log.Fatal("SESSION_BADGER_DIR env var is required")
}
db, err := badger.New(os.Getenv("SESSION_BADGER_DIR")) Prevention
- Fail fast at boot when configured paths are empty.
- Provide sane defaults like ./sessions/.
- Never construct session DBs inline with unvalidated config strings.
When it happens
Trigger: Calling badger.New("") when wiring sessions: e.g. sessions.New(sessions.Config{...}, badger.New("")) or db, err := badger.New("") — commonly when the path comes from an unset environment variable or empty config field.
Common situations: Env var like SESSION_DB_DIR not set in a container/deployment; YAML/JSON config with a missing directoryPath key; copying sample code and forgetting to fill the path.
Related errors
- path is required
- not implemented yet
- session not found
- empty regex expression
- unexpected file extension: %s
AI-assisted analysis of kataras/iris@7bedaf55a0 (2026-08-30).
Data as JSON: /api/errors/8bd1a9a7cce36328.
Report an issue: GitHub.