Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Cloudant在文档更新时返回500 function_子句错误,但实际成功_Java_Couchdb_Cloudant_Ibm Cloud - Fatal编程技术网

Java Cloudant在文档更新时返回500 function_子句错误,但实际成功

Java Cloudant在文档更新时返回500 function_子句错误,但实际成功,java,couchdb,cloudant,ibm-cloud,Java,Couchdb,Cloudant,Ibm Cloud,我有一个在Bluemix中运行的Java/Liberty应用程序,它使用Cloudant数据库作为Bluemix服务 应用程序对Cloudant中的文档进行更新。在晚上,其中一个更新失败,出现了一个500 function_子句错误。不幸的是,我们没有记录提交的确切数据,但在本例中,我认为这并不重要,因为请求似乎已实际成功,这意味着提交的数据实际上没有任何问题。我们的日志显示在以下几分钟前成功更新了同一文档: [4/23/15 6:02:47:790 UTC] 00011bf6 Cloudant

我有一个在Bluemix中运行的Java/Liberty应用程序,它使用Cloudant数据库作为Bluemix服务

应用程序对Cloudant中的文档进行更新。在晚上,其中一个更新失败,出现了一个500 function_子句错误。不幸的是,我们没有记录提交的确切数据,但在本例中,我认为这并不重要,因为请求似乎已实际成功,这意味着提交的数据实际上没有任何问题。我们的日志显示在以下几分钟前成功更新了同一文档:

[4/23/15 6:02:47:790 UTC] 00011bf6 CloudantDBCon I   Storing object: <mydoc> revision: 28786-84dc6b5f33dc3c54041bd430ecfd3db7
[4/23/15 6:02:47:844 UTC] 00011bf6 CloudantDBCon I   RESTResponse:201:{"ok":true,"id":"<mydoc>","rev":"28787-f932d7d249fd6d36d8b0e692f6e77abd"}
您至少可以从中看出它与跟踪语句的匹配情况,即对象中的修订是正确的


最基本的问题是为什么Cloudant执行了更新,但返回500却声称没有执行更新?

在更新文档时,您应该始终确保您拥有最新版本。它确实拥有最新版本。如果您查看上面引用的第一次成功更新的响应,第二次失败的更新将使用正确的下一版本。其间没有更新。正如我在问题中提到的,更新实际上是在数据库中进行的,因此错误返回似乎是错误的。你能分享你的一些代码吗?没有一点代码就很难调试。如中所述,“function_子句”错误可能表明JavaScript有问题。查看map/reduce函数以查找错误。是否有可能来自多个应用实例的并发更新在Cloudant中发生冲突,其中一个成功,但另一个失败了?@jimmc,谢谢,我看过这篇文章,但我认为它不适用于这里。因为问题很少发生,而且调用实际上成功了,尽管它报告了失败,所以我们的代码似乎不太可能有问题。有人建议我使用Cloudant支持打开一张票证,我会这样做。如果他们有任何决定,我会再发一次。
[4/23/15 6:03:03:215 UTC] 00011cc9 CloudantDBCon I   Storing object: <mydoc> revision: 28787-f932d7d249fd6d36d8b0e692f6e77abd
[4/23/15 6:03:10:171 UTC] 00011cc9 CloudantDBCon I   RESTResponse:500:{"error":"function_clause","reason":null,"ref":1199554705}
[4/23/15 6:05:39:605 UTC] 00011b5e CloudantDBCon I   Storing object: <mydoc> revision: 28788-306b2753e972f9d664d22cfadd9b0f3d
[4/23/15 6:05:40:368 UTC] 00011b5e CloudantDBCon I   RESTResponse:201:{"ok":true,"id":"<mydoc>","rev":"28789-0325241da136f39780ff4b2f97438182"}
public void storeObject(String id, JSONObject obj) {
    try {
        String rev = null;
        try {
            rev = obj.getString("_rev");
        } catch (JSONException jse) {
            rev = "none";
        }
        log.info("Storing object: " + id + " revision: " + rev);
        RESTResponse response = RESTClient.RESTRequestWithRetry(REQUEST_METHOD_PUT,
                                                                URL + "/" + id,
                                                                obj.toString(),
                                                                username,
                                                                password,
                                                                RETRY_INTERVAL);
        log.info("storeObject: " + response.toString());
        ...