Domanda

[ risolto , sembra che ci fosse un po 'di bug che colpisce Alfresco 3.3.0, che non è più presente su Alfresco 3.3.0G]

Ciao,

Sto usando opencmis per recuperare i dati da Alfresco 3.3, ma sta avendo un comportamento molto strano sulle query CMISQL. Ho googlato qualcun altro con gli stessi problemi, ma sembra che io sia il primo in tutto il mondo :), quindi immagino sia colpa mia, non opencmis '.

È così che sto interrogando 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;
    }

}
.

Come puoi vedere, eseguiamo solo la stessa query, fino a 20 volte di seguito. Ti aspetteresti lo stesso risultato ogni volta, vero? Sfortunatamente, questo è un esempio di ciò che otteniamo:

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
.

A volte otteniamo 20 1 di fila, a volte è tutto 0. Non abbiamo mai ricevuto un "mix" di 1 e 0, però; Otteniamo sempre "una corsa" di loro.

Non importa se creiamo la sessione prima di ogni query, abbiamo ancora il problema casuale. Abbiamo provato contro due diversi server Alfresco (entrambi 3.3 Comunità), installazione pulita, ed entrambi falliscono in modo casuale. Abbiamo anche provato a misurare il tempo per ogni query, ma non sembra avere alcuna relazione tra con il risultato che è sbagliato (0 folders retrieved) o destra (1 folders retrieved).

Alfresco sembra funzionare bene: se andiamo a "Amministrazione -> Browser nodo" e avvia la query CMISQL da lì, recupera sempre una cartella, che è giusta. Quindi, deve essere il nostro codice o un bug di opencmis ...

Qualche idea?

È stato utile?

Soluzione

Non posso riprodurre questo comportamento.Sta correndo bene contro http://cmis.alfresco.com .Il problema https://issues.alfresco.com/jira/browse/alf-2859 afferma che ci sono state corrette di bug.Stai eseguendo la versione più recente di Alfresco?

florian

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top