【问题标题】:Same Azure Cosmos DB one time it runs other time shows message Size is too large同一 Azure Cosmos DB 一次运行其他时间显示消息大小太大
【发布时间】:2018-11-10 07:30:45
【问题描述】:

我正在 azure 门户中编写 Azure Cosmos DB 存储过程,我正在检查它最初可以给出的最大响应大小是多少,后来它给了我 4.8 MB 响应,任何大小都显示消息大小过大的错误.稍后在 5 分钟后执行相同的程序和相同的参数,它显示太大的页面大小的错误。

    // SAMPLE STORED PROCEDURE
function sample(prefix) {
    var collection = getContext().getCollection();

    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT r.data.truckSerialNo FROM root r',{pageSize : -1},
    function (err, feed, options) {
        if (err) throw err;

        // Check the feed and if empty, set the body to 'no docs found', 
        // else take 1st element from feed
        if (!feed || !feed.length) {
            var response = getContext().getResponse();
            response.setBody('no docs found');
        }
        else {
            console.log(feed.length);
            var response = getContext().getResponse();
            var body = { prefix: prefix, feed: feed };
            var str = {};
            str.x1 = body ;
            str.x2 = body ;




            response.setBody(JSON.stringify(str));
        }
    });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

和错误

无法执行收集的存储过程 testProcedure iotcollection: {"code":400,"body":"{\"code\":\"BadRequest\",\"message\":\"Message: {\\"Errors\\":[\\"执行函数时遇到异常。 异常 = 错误:结果消息太大,因为 \\\\“身体\\\\”。从带有当前消息的脚本返回并使用 继续令牌再次调用脚本或修改您的 script.\\r\\nStack 跟踪:错误:结果消息也是 大是因为\\\\"Body\\\\"。从当前脚本返回 消息并使用延续令牌再次调用脚本或修改 你的脚本。\\n 在 validateSize (bulkUpsert_v_1_0.js:177:25)\\n 在 setValueInternal (bulkUpsert\\"]}\r\nActivityId: d61226ab-4d5e-4a3d-aa09-83351649ce4c,请求 URI: /apps/59d3b9ef-17ca-4bbf-8a11-39d0199a8d29/services/1b26e00f-1f51-4d34-88ec-4090b8e7db00/partitions/45a313b7-2cf2-419e-9885-48bf9cfe6277/replicas/13186239 RequestStats: \r\nRequestStartTime: 2018-11-10T06:41:26.3320532Z, 尝试的区域数: 1\r\n, SDK: Microsoft.Azure.Documents.Common/2.1.0.0\"}","activityId":"d61226ab-4d5e-4a3d-aa09-83351649ce4c","substatus":413}

【问题讨论】:

标签: azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

根据我的经验,{pageSize : -1} 在 cosmos db 查询操作中数据太大时,不强烈推荐设置。延续令牌(即 cosmos db rest api 中的 x-ms-continuation-token)需要考虑到您的业务中。请参考我之前的案例:CosmosDB stored procedure not returning all documents

如您所说,稍后在 5 分钟后执行相同的程序和相同的参数,它显示页面尺寸过大的错误。大小限制是总响应,包括其他Response Headers,而不仅仅是body 部分。另外,如果设置{pageSize : -1},查询操作会根据当前性能返回最大结果。不是固定的。

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多