gpt4 book ai didi

Couchbase 删除的文件重新出现在数据库中

转载 作者:行者123 更新时间:2023-12-04 13:29:09 28 4
gpt4 key购买 nike

我们遇到了一个问题,即已删除的文档重新出现在我们的 Couchbase 服务器上。
我们有一个在 CBL 上创建文档的场景。这些文档同步到服务器。用户意识到发生了错误并将文档标记为不正确。在服务器上,管理员可以查看所有被标记的文档并从服务器中删除它们。同步网关已设置为仅同步这些类型的文档,即一旦在服务器上对这些文档进行了编辑,更改就不会同步回 CBL。
这是发生的过程:

  • 文档在 CBL 上创建,TTL 为 15 天并同步到同步
  • 文档在 CBL 上更新并同步到同步网关。
  • 使用 DELETE 从 Couchbase Server 存储桶中删除文档
    N1QL 查询。
  • 从存储桶中删除文档后,它会得到
    几天内再次随机添加。
  • 只有符合以下条件的文件
    仍然在设备上,即不超过 15 天的 TTL,被添加
    回到水桶。

  • 我们尝试将元数据清除间隔增加到 15 天以上,但这并没有解决问题。
    有没有人有任何建议或可能知道这里可能存在什么问题?
  • Couchbase Server 社区版 6.5.1 build 6299
  • 同步网关 2.7.3
  • Couchbase Lite Android 2.8.1

  • 提前致谢!
    PS:这是我们带有同步功能的同步网关配置:
        "log": [
    "*"
    ],
    "adminInterface": "0.0.0.0:4985",
    "interface": "0.0.0.0:4984",
    "databases": {
    "prod": {
    "server": "http://localhost:8091",
    "bucket": "prod_bukcet",
    "username": "sync_gateway",
    "password": "XXX",
    "enable_shared_bucket_access": true,
    "import_docs": "continuous",
    "use_views": true,
    "users": {
    "user_X": {
    "password": "XXX",
    "admin_channels": ["*"],
    "disabled": false
    }
    },
    "sync":`
    function sync(doc, oldDoc) {
    /* sanity check */
    // check if document was removed from server or via SDK
    // In this case, just return
    if (isRemoved()) {
    return;
    }
    //Only sync down documents that are created on the server
    if (doc.deviceDoc == true) {
    channel("server");
    } else {
    if (doc.siteId) {
    channel(doc.siteId);
    } else {
    channel("devices");
    }
    }
    // This is when document is removed via SDK or directly on server
    function isRemoved() {
    return (isDelete() && oldDoc == null);
    }
    function isDelete() {
    return (doc._deleted == true);
    }
    }`,
    }
    }
    }

    最佳答案

    在共享桶访问模式下(enable_shared_bucket_access:true),a N1QL delete on a document creates a tombstone .墓碑总是同步的。服务器上的元数据清除间隔设置决定了在服务器上清除逻辑删除的时间段。因此,通常将其设置为与客户端的最大分区窗口匹配的值——即确保所有断开连接的客户端都有机会获得已删除的文档。因此,将其设置为 > 15 天仅意味着墓碑将在 15 天后被清除,因此墓碑文档将同时同步到客户端。
    在您的情况下,如果您不希望文档同步到客户端,因为文档的生命周期是通过 expireDate() 在 CBL 端独立管理的,那么清除文档而不是在服务器上删除它。

    关于Couchbase 删除的文件重新出现在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66203948/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com