Hi Peter,

Many thanks for your reply. Based on your explanation, I did some more
experiments. I think the results prove that you are right.

1) I put a breakpoint just before session.query(), then used CMIS workbench
to verify that the query returned results, then stepped over the
breakpoint. I found that session.query() now returned correct results.

2) Your explanation of the issue and the above experiment seemed to suggest
that, if I add more time between adding documents to a folder and execution
of the query, probably it should return correct results. By trial and error
I found that if I add 20 seconds between adding of a document and execution
of the query via Open CMIS API, I get the correct results 10 out of 10
trials.

I assume the above behaviour(ie, alfresco asynchronous indexing causing
incorrect query results for a very short period of time) is not an issue in
real-world situations? Or is there any way to address this?

Thanks,
Joshy




On Mon, Aug 11, 2014 at 9:05 PM, Peter Monks <peter.mo...@alfresco.com>
wrote:

> G’day Josh,
>
> One thing to watch out for with Alfresco is that query is “eventually
> consistent” - indexing of new / updated content is done asynchronously and
> those indexes are used by the query engine.  As of Alfresco 4.2 there’s a
> metadata query capability<
> http://wiki.alfresco.com/wiki/Alfresco_Community_4.2#Metadata_Query> [1]
> that can be enabled to allow some (but not all) queries to be run in a
> transactionally consistent fashion, although note that the query below
> doesn’t meet the requirements to be executed as a metadata query (due to
> the LIKE and IN_TREE clauses).
>
> That said, if this were indeed Alfresco’s eventually consistent behaviour
> I would expect both your client application and the CMIS Workbench to
> exhibit the same (or similar) results.  The indexes are a global resource,
> so it’s difficult to imagine a case where the two clients would continue to
> return inconsistent results for a lengthy period of time (unless, of
> course, you’re authenticated as different users - then it could be
> explained by ACLs).
>
> At this point it’s hard to tell where the issue might lie (OpenCMIS vs
> custom code vs CMIS Workbench vs Alfresco server), so I’ve cc’ed the
> alfresco-technical-discussion google group - hopefully between the two
> groups we’ll be able to narrow down the possibilities.
>
> Cheers,
> Peter
>
> [1] http://wiki.alfresco.com/wiki/Alfresco_Community_4.2#Metadata_Query
>
>
> On 2014-08-11, at 9:13 AM, Joshy Augustine <joshymaugust...@gmail.com
> <mailto:joshymaugust...@gmail.com>> wrote:
>
> Hi All,
>
> I am a newbie to Open CMIS. I am very fascinated by Open CMIS framework
> that allowed me to write(almost in no time) a sample test program that
> interacts with a various ECM Vendors. However, I am encountering a strange
> issue with Alfresco and wondered whether any of you had the time to help?
>
> In the sample code I am developing, I perform the following actions
>
> 1) Create a Folder in Alfresco
> 2) Add  a few documents to it
> 3) Search (via CMIS Query) for the list of documents in a folder tree that
> matches with search criteria.
>
> In step 3, I execute the following API
>
>
> ItemIterable<QueryResult> queryResult = session.query(complete_statement,
> *false*,operationContext);
>
> Iterator<QueryResult> iterator = queryResult.iterator();
>
> *while* (iterator.hasNext())
>
> {
>
> QueryResult qr = (QueryResult) iterator.next();
>
> String id = (String) qr.getPropertyByQueryName("cmis:objectId"
> ).getFirstValue());
>
> }
>
> that results in the following query being executed.
>
> *SELECT cmis:objectId FROM cmis:document WHERE cmis:name like 'Hello Wor%'
> AND IN_TREE('c4714b61-2800-4995-8e37-2cc07549d4b2') ORDER BY
> cmis:creationDate desc*
> When I run the test program, most of the times, this query does not return
> any results. If i put a breakpoint in the line session.query() and execute
> the statement using CMIS Workbench, I am able to find results.
> Sometimes(but not always) even putting a Thread.sleep() before
> session.query() allows me to find the documents that query should have
> found.
>
>
> Any idea what is the best way to debug this issue?
>
>
> Cheers,
> Josh
>
>


-- 
Cheers,
Josh

Reply via email to