Return-Path: X-Original-To: apmail-chemistry-dev-archive@www.apache.org Delivered-To: apmail-chemistry-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 02832109A8 for ; Thu, 20 Nov 2014 18:40:35 +0000 (UTC) Received: (qmail 49490 invoked by uid 500); 20 Nov 2014 18:40:34 -0000 Delivered-To: apmail-chemistry-dev-archive@chemistry.apache.org Received: (qmail 49435 invoked by uid 500); 20 Nov 2014 18:40:34 -0000 Mailing-List: contact dev-help@chemistry.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@chemistry.apache.org Delivered-To: mailing list dev@chemistry.apache.org Received: (qmail 49394 invoked by uid 99); 20 Nov 2014 18:40:34 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Nov 2014 18:40:34 +0000 Date: Thu, 20 Nov 2014 18:40:34 +0000 (UTC) From: "Vincent Tang (JIRA)" To: dev@chemistry.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CMIS-871) Client API Atompub binding - getContentChanges still sends change log token even though I specify null for the changeLogToken parameter MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CMIS-871?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14219752#comment-14219752 ] Vincent Tang commented on CMIS-871: ----------------------------------- My test code is very simple. 1. Create session 2. Get repository info which will get the latest change log token, cache the change log token 3. Create a bunch of documents, delete some, update some so that the change events will be created after we retrieve the latest change log token in step 2. 4. Call getContentChanges with null for changeLogToken 5. Delete these documets The junit code of step 4 is below @Test public void testGetContentChangesWithoutChangeLogToken() throws Exception { logger.info("************************** testGetContentChangesWithoutChangeLogToken *********************"); ItemIterable changeEvents = session.getContentChanges(null, false); assertNotNull(changeEvents); logger.info("Number of Change events: " + changeEvents.getTotalNumItems()); } I captured HTTP messages using TCPMON. I posted the complete trace below. The only getContentChanges is the 3rd last one. It has a change log token. GET /fncmis/resources/Service?repositoryId=ICNAutomation HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content?path=%2F&filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Type/cmis%3Afolder HTTP/1.1 GET /fncmis/resources/ICNAutomation/ContentFlat/idf_0F1E2D3C-4B5A-6978-8796-A5B4C3D2E1F0?includeAllowableActions=true&includeRelationships=none&renditionFilter=cmis%3Anone&includePathSegment=true&maxItems=100&skipCount=0 HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idf_6FEB6A26-7438-4B7C-BA7C-82A3FD4D93FB?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idf_6FEB6A26-7438-4B7C-BA7C-82A3FD4D93FB?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_6FEB6A26-7438-4B7C-BA7C-82A3FD4D93FB HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Type/cmis%3Adocument HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_29ACEDB9-D075-4FA2-B062-2733ED5FB329?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_79F812B4-0AC8-4461-BC00-ECB9DF5A13C4?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_D270A01F-6712-40ED-8A78-D36645FE8CB6?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_D079C925-9998-4E56-A9DF-B57B62D7BDE7?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_4967AC5A-AEC1-4E6B-BB2A-3CFE79915CD7?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_F2C8A180-83E4-48C1-B508-9F12F5DC3B2B?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_02CFFB5F-49E1-4AB1-8E50-469ADF655695?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_4E4E53DB-C735-49F3-8823-236E903BB6C2?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_A92B1782-9DC1-486C-80C3-86F0846AF78D?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_97365CF7-3E18-4156-8BFC-FA96D574D18A?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_1A2E1C89-C6B7-47BE-AE9A-BC16A51B8535?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_15A975B9-24CF-4B02-BC67-8900AF77F235?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_CF226707-DC83-426B-B6B9-A058110DA629?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_2719943B-0085-40B3-B956-C026F3276CB0?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_21D55085-7ECB-49CA-86B3-1B78AB8C88B4?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_F9C7EB90-725A-4AAE-A9AD-785C29C78AD3?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 POST /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?versioningState=major HTTP/1.1 GET /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?includeAllowableActions=true&includeRelationships=none&renditionFilter=cmis%3Anone&includePathSegment=true&maxItems=100&skipCount=0 HTTP/1.1 DELETE /fncmis/resources/ICNAutomation/Content/idd_5347520A-B0FC-4001-8C89-716367D90E52?allVersions=true HTTP/1.1 DELETE /fncmis/resources/ICNAutomation/Content/idd_F9C7EB90-725A-4AAE-A9AD-785C29C78AD3?allVersions=true HTTP/1.1 DELETE /fncmis/resources/ICNAutomation/Content/idd_21D55085-7ECB-49CA-86B3-1B78AB8C88B4?allVersions=true HTTP/1.1 GET /fncmis/resources/ICNAutomation/ContentFlat/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?includeAllowableActions=true&includeRelationships=none&renditionFilter=cmis%3Anone&includePathSegment=true&maxItems=100&skipCount=0 HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_2719943B-0085-40B3-B956-C026F3276CB0?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 PUT /fncmis/resources/ICNAutomation/Content/idd_2719943B-0085-40B3-B956-C026F3276CB0?changeToken=0 HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_2719943B-0085-40B3-B956-C026F3276CB0?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_2719943B-0085-40B3-B956-C026F3276CB0?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_CF226707-DC83-426B-B6B9-A058110DA629?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 PUT /fncmis/resources/ICNAutomation/Content/idd_CF226707-DC83-426B-B6B9-A058110DA629?changeToken=0 HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_CF226707-DC83-426B-B6B9-A058110DA629?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idd_CF226707-DC83-426B-B6B9-A058110DA629?filter=&includeAllowableActions=true&includeACL=false HTTP/1.1 GET /fncmis/resources/ICNAutomation/changes?changeLogToken=1017991.0&includeProperties=false&includePolicyIds=false&includeACL=false&maxItems=2147483647 HTTP/1.1 GET /fncmis/resources/ICNAutomation/Content/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?filter=cmis%3AobjectId&includeAllowableActions=false&includeACL=false HTTP/1.1 DELETE /fncmis/resources/ICNAutomation/ContentTree/idf_BD4A8268-71EF-45B0-8C13-C57F8A302000?allVersions=true&unfileObjects=delete&continueOnFailure=true HTTP/1.1 > Client API Atompub binding - getContentChanges still sends change log token even though I specify null for the changeLogToken parameter > --------------------------------------------------------------------------------------------------------------------------------------- > > Key: CMIS-871 > URL: https://issues.apache.org/jira/browse/CMIS-871 > Project: Chemistry > Issue Type: Bug > Components: opencmis-client > Affects Versions: OpenCMIS 0.12.0 > Environment: Windows 64 bits > Reporter: Vincent Tang > Labels: getContentChanges > > I found 2 OpenCMIS Client API problems in my test to use OpenCMIS Client API Session.getContentChanges(String changeLogToken, boolean includeProperties). > The test is calling it like session.getContentChanges(null, false); You see I set null to changeLogToken. Based on my understanding of CMIS specification, I assume that the API would not include a change log token in the request. > The problems I found are > 1. OpenCMIS API send a changeLogToken anyway in Atompub binding but null in Web services binding. The latter is compliant with CMIS specification but the former is not. I think the OpenCMIS API in Atompub binding has a bug. > 2. This API sends a default maxItems in request because our test doesn't specify one. However OpenCMIS API sends an unreasonable maxItem 2147483647. I think it is the maximum value of a java integer. It causes different effect in Atompub and web services bindings. > In Atompub binding, because of the bug (a change log token is passed in), CMIS passed the change log token and the maxItems in the query, the query returns the change events after the change log token. Therefore the test cases passed. > In web services binding, the null value change log token and the maxItems will effectively return the entire change log from the repository. It causes the query hang and eventually timed out after 300 seconds. > This JIRA is reporting the first problem. I am not sure if the second problem (maxItems = 2147483647 by default) is a problem. Because CMIS specification doesn't say anything about the default maxItems. We will do something at server side to prevent such a unreasonable maxItems to be used in query. -- This message was sent by Atlassian JIRA (v6.3.4#6332)