Alfresco 3.3.0上使用CMISQL查询的随机故障

Alfresco 3.3.0上使用CMISQL查询的随机故障,alfresco,cmis,apache-chemistry,Alfresco,Cmis,Apache Chemistry,[已解决,似乎存在影响Alfresco 3.3.0的某些错误,该错误在Alfresco 3.3.0g上不再存在] 嗨 我使用它从Alfresco 3.3中检索数据,但是它在CMISQL查询中有一个非常奇怪的行为。我在谷歌上搜索过其他有同样问题的人,但似乎我是世界上第一个:),所以我想这是我的错,不是OpenCMIS的错 这就是我查询Alfresco的方式: public Class CmisTest { private static Session sesion; privat

[已解决,似乎存在影响Alfresco 3.3.0的某些错误,该错误在Alfresco 3.3.0g上不再存在]

我使用它从Alfresco 3.3中检索数据,但是它在CMISQL查询中有一个非常奇怪的行为。我在谷歌上搜索过其他有同样问题的人,但似乎我是世界上第一个:),所以我想这是我的错,不是OpenCMIS的错

这就是我查询Alfresco的方式:

public Class CmisTest {
    private static Session sesion;

    private static final String QUERY = "select cmis:objectid, cmis:name from cmis:folder where cmis:name='MyFolder'";

    public static void main(String[] args) {
        // Open a CMIS session with Alfresco
        Map<String, String> params = new HashMap<String, String>();
        params.put(SessionParameter.USER, "admin");
        params.put(SessionParameter.PASSWORD, "admin");
        params.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/s/api/cmis");
        params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
        params.put(SessionParameter.REPOSITORY_ID, "fa9d2553-1e4d-491b-87fd-3de894dc7ca9");
        sesion = SessionFactoryImpl.newInstance().createSession(params);

        // Ugly bug in Alfresco which raises an exception if we request more data than it's available
        // See https://issues.alfresco.com/jira/browse/ALF-2859
        sesion.getDefaultContext().setMaxItemsPerPage(1);

        // We repeat the same query 20 times and count the number of elements retrieved each time
        for (int i = 0; i < 20; i++) {
            List<QueryResult> result = doQuery();
            System.out.println(result.size() + " folders retrieved");
        }
    }

    public static List<QueryResult> doQuery() {
        List<QueryResult> result = new LinkedList<QueryResult>();
        try {
            int page = 0;
            while (true) {
                ItemIterable<QueryResult> iterable = sesion.query(QUERY, false).skipTo(page);
                page++;
                for (QueryResult qr : iterable) {
                    result.add(qr);
                }
            }
        } catch (Exception e) {
            // We will always get an exception when Alfresco has no more data to retrieve... :(
            // See https://issues.alfresco.com/jira/browse/ALF-2859
        }
        return result;
    }

}
有时我们一行得到20个
1
,有时全部是
0
。然而,我们从未得到过
1
0
的“混合”;我们总是“跑”一圈

无论我们是否在每次查询之前创建会话,我们仍然存在随机问题。我们已经对两个不同的Alfresco服务器(都是3.3社区)进行了测试,它们都是干净安装,并且都随机失败。我们还尝试测量每个查询的时间,但它似乎与结果错误(
0个检索到的文件夹
)或正确(
1个检索到的文件夹
)没有任何关系

Alfresco似乎工作正常:如果我们转到“管理-->节点浏览器”并从那里启动CMISQL查询,它总是检索一个文件夹,这是正确的。所以,它一定是我们的代码,或者是OpenCMIS错误


有什么想法吗?

我不能重现这种行为。和你的对手比赛很好。该问题指出已经有错误修复。你在运行最新的露天版本吗


弗洛里安

你好,弗洛里安,谢谢你的回答。我使用的是Alfresco 3.3.0(build 2765),我没有注意到Alfresco 3.3g已经发布了。我会更新它,希望ALF-2859的问题会消失。至于测试,我现在正在测试,我无法复制它。也许在我的Alfresco版本中还有另一个bug,我必须在更新后重试。从3.3.0升级到3.3.0g后,“随机行为”似乎得到了解决。现在我总是得到0个结果(显然,查询cmis:name属性不起作用)。。。但至少,它总是失败。再次感谢您的帮助:)
1 folders retrieved
1 folders retrieved
1 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
1 folders retrieved
1 folders retrieved