Случайные сбои при использовании запросов CMISQL в Alfresco 3.3.0

[Решено, похоже, в Alfresco 3.3.0 возникла ошибка, которой больше нет в Alfresco 3.3.0g]

Hi,

Я использую OpenCMIS для извлечения данных из 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 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

Иногда мы получаем 20 1 подряд, иногда все 0. Однако мы никогда не получали «смесь» 1 и 0; мы всегда получаем "бег" из них.

Не имеет значения, создаем ли мы сессию перед каждым запросом, у нас все еще есть случайная проблема. Мы пробовали с двумя разными серверами Alfresco (оба 3.3 Community), чистую установку, и они оба терпят неудачу случайным образом. Мы также пытались измерить время для каждого запроса, но, похоже, это не имеет никакого отношения к тому, будет ли результат неправильным (0 folders retrieved) или правильным (1 folders retrieved).

Alfresco, похоже, работает нормально: если мы перейдем в «Администрирование -> Браузер узлов» и запустим оттуда запрос CMISQL, он всегда извлекает одну папку, что правильно. Значит, это наш код или ошибка OpenCMIS...

Любые идеи?


person AJPerez    schedule 08.07.2010    source источник


Ответы (1)


Я не могу воспроизвести это поведение. Он отлично работает с http://cmis.alfresco.com . Проблема https://issues.alfresco.com/jira/browse/ALF-2859 сообщает, что были исправлены ошибки. Вы используете последнюю версию Alfresco?

Флориан

person Florian Müller    schedule 08.07.2010
comment
Привет Флориан, спасибо за ваш ответ. Я использую Alfresco 3.3.0 (сборка 2765), я не заметил, что уже вышла Alfresco 3.3g. Я обновлю его, и, надеюсь, проблема с ALF-2859 исчезнет. Что касается теста, я сейчас тестирую cmis.alfresco.com и не могу его воспроизвести. . Может в моей версии Alfresco была другая ошибка, надо будет повторить после обновления. - person AJPerez; 08.07.2010
comment
После обновления с 3.3.0 до 3.3.0g кажется, что случайное поведение устранено. Теперь я всегда получаю 0 результатов (очевидно, запрос свойства cmis:name не работает)... но, по крайней мере, он всегда терпит неудачу. В очередной раз благодарим за помощь :) - person AJPerez; 08.07.2010