temporalio/temporal · error · Unavailable

rowsAffected returned %v DLQ metadata instead of one

Error message

rowsAffected returned %v DLQ metadata instead of one

What it means

Error "rowsAffected returned %v DLQ metadata instead of one" thrown in temporalio/temporal.

Source

Thrown at common/persistence/sql/queue.go:284

	ctx context.Context,
	metadata *persistence.InternalQueueMetadata,
) error {
	err := q.txExecute(ctx, "UpdateDLQAckLevel", func(tx sqlplugin.Tx) error {

		result, err := tx.UpdateQueueMetadata(ctx, &sqlplugin.QueueMetadataRow{
			QueueType:    q.getDLQTypeFromQueueType(),
			Data:         metadata.Blob.Data,
			DataEncoding: metadata.Blob.EncodingType.String(),
		})
		if err != nil {
			return serviceerror.NewUnavailablef("UpdateDLQAckLevel operation failed. Error %v", err)
		}
		rowsAffected, err := result.RowsAffected()
		if err != nil {
			return fmt.Errorf("rowsAffected returned error for DLQ metadata %v: %v", q.queueType, err)
		}
		if rowsAffected != 1 {
			return fmt.Errorf("rowsAffected returned %v DLQ metadata instead of one", rowsAffected)
		}
		return nil
	})

	if err != nil {
		return serviceerror.NewUnavailable(err.Error())
	}
	return nil
}

func (q *sqlQueue) GetDLQAckLevels(
	ctx context.Context,
) (*persistence.InternalQueueMetadata, error) {
	row, err := q.DB.SelectFromQueueMetadata(ctx, sqlplugin.QueueMetadataFilter{
		QueueType: q.getDLQTypeFromQueueType(),
	})
	if err != nil {
		return nil, serviceerror.NewUnavailablef("GetDLQAckLevels operation failed. Error %v", err)

View on GitHub (pinned to bde624efd1)

When it happens

Trigger: Thrown at common/persistence/sql/queue.go:284 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of temporalio/temporal@bde624efd1 (2026-09-01). Data as JSON: /api/errors/fec9130b34f75d73. Report an issue: GitHub.