Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Does pg-cursor return empty result even on network error?

未关闭
#3,768 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
38/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
活跃
技术栈
javascript, node.js, postgresql
领域
backend, databases

调研方向

从文档中的 pg-cursor API 开始,跟踪所示的 next() 循环经过 cursor.read(min) 的执行路径,尤其关注连接关闭和死锁错误路径。如果可能,复现高负载场景,并确认空结果是有效的结束标记还是错误;完成的标准是行为和所需的处理方式都已得到验证。

由索引模型根据 Issue 内容生成。

描述

As per this link https://node-postgres.com/apis/cursor , cursor will return empty result so we can stop.

But we have found that under huge load, when postgres closes connection or throws an error due to deadlock, cursor returns empty result. This happens rarely and out of 100 thousand of transactions, approx 20 to 80 transactions fail when cursor returns empty results, but results are sure there.

This occurs only under huge load. Under moderate or low load, everything works fine.

    async *next(min = 100) {

        const connection = await this.connection.getConnection(this.signal);
        const q = toQuery(this.command);
        const cursor = this.cursor = connection.query(new Cursor(q.text, q.values));
        do {
            const rows = await cursor.read(min);
            yield *rows;
            if (rows.length === 0) {
                break;
            }
        } while (true);
    }

Do I need to add error handler here as well?

Unfortunately I cannot create a stressed environment that results in similar situation.

主要语言
JavaScript
星标
13.2k
派生
1.4k
平均合并
6 天 15 小时
30 天内合并 PR
6

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

brianc/node-postgres 的其他 Issue

查看 brianc/node-postgres 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。