Skip to content

Intermittent EOF when reading OUT CLOB via ExecContext #706

@rickanutyi

Description

@rickanutyi

`ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 1*time.Minute)
defer cancel()

var resultMsg go_ora.Clob

_, err = s.db.ExecContext(ctx, buildedQuery, go_ora.Out{
	Dest: &resultMsg,
})
   	log.Println("Result: ", resultMsg) // Result:  {[]  false}
    log.Println("Error executing query: ", err) //Error executing query:  EOF`

I’m occasionally getting an EOF error when executing a PL/SQL block that returns an OUT CLOB parameter.
In most cases it works perfectly, but sometimes (roughly once every few days under load) it fails immediately — within a second.
It’s hard to debug because there’s no additional context or stack trace — just EOF.
I’m not sure whether the issue comes from go-ora or from Oracle itself.
If I immediately repeat the same query, it succeeds without any issue.

Connection configuration
oracle.SetMaxOpenConns(40) oracle.SetConnMaxLifetime(10 * time.Minute) oracle.SetConnMaxIdleTime(40 * time.Second) oracle.SetMaxIdleConns(2)
github.com/sijms/go-ora/v2 v2.8.24 go 1.23.0
Could this intermittent EOF be related to connection lifetime/idle settings, or is it a potential race/edge case in CLOB streaming inside go-ora?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions