Skip to content

XX000: ResourceOwnerForget called for buffer pin after release started during vchordrq scan on halfvec #463

@r-Larch

Description

@r-Larch

Extension versions:

  • vchord 1.1.1 (latest)
  • vector (pgvector) 0.8.1
  • PostgreSQL PostgreSQL 18.2 (Debian 18.2-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit

Error:
Npgsql.PostgresException: XX000: ResourceOwnerForget called for buffer pin after release started
at resowner.c:572, Routine: ResourceOwnerForget

Setup:

  • Column type: halfvec(1024)
  • Index: vchordrq (MaxInnerProduct / <#> operator)
  • rerank_in_table = true
CREATE INDEX ix_massima_indexes_embedding
    ON massima_indexes
    USING vchordrq (embedding halfvec_ip_ops)
    WITH (
        epsilon = 0.8,
        probes = '480,960',
        options = $$
residual_quantization = false
rerank_in_table = true
build.pin = true

[build.internal]
lists = [8000, 16000]
spherical_centroids = true
build_threads = 8
$$
    );

Trigger: Occurs transiently under concurrent query load.

Workaround: Retrying the query on a fresh connection succeeds 100% of the time.

Stack trace:

An exception occurred while iterating over the results of a query for context type '"Nomos.Judgments.Data.JudgmentDbContext"'."
""Npgsql.PostgresException (0x80004005): XX000: ResourceOwnerForget called for buffer pin after release started
   at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
   at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at Npgsql.NpgsqlDataReader.Read(Boolean async, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.BufferedDataRecord.InitializeAsync(DbDataReader reader, IReadOnlyList`1 columns, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.InitializeAsync(IReadOnlyList`1 columns, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.InitializeAsync(IReadOnlyList`1 columns, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.<>c__DisplayClass30_0`2.b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
  Exception data:
    Severity: ERROR
    SqlState: XX000
    MessageText: ResourceOwnerForget called for buffer pin after release started
    File: resowner.c
    Line: 572
    Routine: ResourceOwnerForget"

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