chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gavin Cornwell <gavin.cornw...@alfresco.com>
Subject Re: CmisStorageException with OpenCMIS 0.10.0 - Alfresco Enterprise 4.2.3
Date Tue, 31 Mar 2015 07:51:47 GMT
Hi Igor,

Could you please let me know the ID of the support case you have opened with us (Alfresco)?

Regards,

Gavin




On 30/03/2015 16:36, "Mark Streit" <mcs130@gmail.com> wrote:

>Igor
>
>Thanks for your reply as well.  We DID confirm that we are creating the
>ContentStream correctly (passing the size) and the resulting length is
>checked and logged to the Console (temporarily) while we are trying to
>determine the problem.  It appears to be correct.
>
>*We already have an open support case with Alfresco on this and have
>included all such information.*
>
>
>In fact, we checked the contentStream and bytes on each of 5 parallel calls
>by Console logging the following:
>
>
>    System.out.println("contentStream: " + contentStream.getStream());
>    System.out.println("contentStream: " + contentStream.getLength());
>
>
>document = folder.createDocument(docProps, contentStream, versioningState);
>  // docProps is the HashMap of properties only
>
>
>And the output we see is:  5 unique object id values each with the correct
>length are reported.
>
>contentStream: java.io.ByteArrayInputStream@2a1a4763
>contentStream: 65201
>contentStream: java.io.ByteArrayInputStream@1fd226e2
>contentStream: 65201
>contentStream: java.io.ByteArrayInputStream@1df6cfc0
>contentStream: 65201
>contentStream: java.io.ByteArrayInputStream@79356271
>contentStream: 65201
>contentStream: java.io.ByteArrayInputStream@36c1559e
>contentStream: 65201
>
>That output is reported just before making that call shown above using the
>method:
>
>
>Folder.*createDocument*(Map docProps, ContentStream contentStream,
>VersioningState versioningState)
>
>
>Mark
>
>On Mon, Mar 30, 2015 at 11:20 AM, Igor Blanco <iblanco@binovo.es> wrote:
>
>> Florian I'm not 100% sure if it does really use a temp file unless the
>> file is bigger than a size. Anyway checking that Alfresco's temporary file
>> partition is not full is a good starting point.
>>
>> Many times is worth checking how you create the content stream.
>> Are you passing the file size when creating the content stream ?
>>
>> I had a customer that had some trouble due to the fact that they were
>> using "-1" and letting the API guess the size. It did work under normal
>> circunstances but it failed in high concurrency scenarios.
>>
>> Bye
>>
>>
>>
>> 2015-03-30 16:07 GMT+02:00 Florian Müller <fmui@apache.org>:
>>
>>> Hi Mark,
>>>
>>> I vaguely remember that this was a problem on the Alfresco side. There is
>>> nothing you can do on the client side.
>>> Alfresco 4 stores document content in a temp file (-> TempFileProvider).
>>> If that fails, you get such an error message.
>>> But you have to talk to Alfresco. It's not OpenCMIS client or server code.
>>>
>>>
>>> - Florian
>>>
>>>
>>>
>>>
>>>  *Chemistry experts *
>>>>
>>>>
>>>>
>>>> *We have a large CMIS implementation using Alfresco Enterprise 4.2.3 and
>>>> Chemistry v0.10.0-RELEASE *
>>>>
>>>>
>>>>
>>>> *Everything has worked extremely well to date but we have now modified
>>>> our
>>>> UI page logic such that it is able to start uploading multiple documents
>>>> in
>>>> parallel - we now have custom built REST services layer that receives the
>>>> requests from the UI and then using the Chemistry client API makes the
>>>> calls.*
>>>>
>>>>
>>>> *We are running into the following issue... (occurs with both browser and
>>>> atom binding and we are using CMIS 1.1 URLs) *
>>>>
>>>>
>>>>
>>>> 2015-03-24 16:50:52,987 ERROR - [ID: ] -
>>>> com.acmecompany.cmis.services.CmisServices.addDocument(): Expected 65201
>>>> bytes but retrieved 0 bytes!
>>>>
>>>>
>>>>
>>>> *org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException:
>>>> Expected 65201 bytes but retrieved 0 bytes!*
>>>>
>>>>
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.bindings.spi.browser.
>>>> AbstractBrowserBindingService.convertStatusCode(
>>>> AbstractBrowserBindingService.java:240)
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.bindings.spi.browser.
>>>> AbstractBrowserBindingService.post(AbstractBrowserBindingService.
>>>> java:352)
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.bindings.spi.browser.
>>>> ObjectServiceImpl.createDocument(ObjectServiceImpl.java:83)
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.runtime.SessionImpl.
>>>> createDocument(SessionImpl.java:751)
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.runtime.FolderImpl.
>>>> createDocument(FolderImpl.java:95)
>>>>
>>>> at
>>>> org.apache.chemistry.opencmis.client.runtime.FolderImpl.
>>>> createDocument(FolderImpl.java:469)
>>>>
>>>>
>>>>
>>>> The line of code that triggers the error is this:
>>>>
>>>>
>>>>
>>>>        org.apache.chemistry.opencmis.client.api.*Document*
>>>>  document = folder.createDocument(docProps, contentStream,
>>>> versioningState);
>>>>
>>>>
>>>> This has always worked where we were running createDocument() calls
>>>>  SERIALLY  (we were throttling the pace such that only one call was made
>>>> at
>>>> a time)...
>>>>
>>>>
>>>> As soon as we changed things to perhaps having 3 to 5 events running in
>>>> PARALLEL, the CmisStorageException is thrown above with only a couple of
>>>> uploads making it through...
>>>>
>>>>
>>>>
>>>> In fact, we checked the contentStream and bytes on each of 5 parallel
>>>> calls
>>>> by Console logging the following:
>>>>
>>>>
>>>>
>>>>          System.out.println("contentStream: " +
>>>> contentStream.getStream());
>>>>
>>>>     System.out.println("contentStream: " + contentStream.getLength());
>>>>
>>>>
>>>> document = folder.createDocument(docProps, contentStream,
>>>> versioningState);
>>>> // docProps is the HashMap of properties only
>>>>
>>>>
>>>> And the output we see is:
>>>>
>>>>
>>>>
>>>> contentStream: java.io.ByteArrayInputStream@2a1a4763
>>>>
>>>> contentStream: 65201
>>>>
>>>> contentStream: java.io.ByteArrayInputStream@1fd226e2
>>>>
>>>> contentStream: 65201
>>>>
>>>> contentStream: java.io.ByteArrayInputStream@1df6cfc0
>>>>
>>>> contentStream: 65201
>>>>
>>>> contentStream: java.io.ByteArrayInputStream@79356271
>>>>
>>>> contentStream: 65201
>>>>
>>>> contentStream: java.io.ByteArrayInputStream@36c1559e
>>>>
>>>> contentStream: 65201
>>>>
>>>>
>>>>
>>>> *5 unique contentStream object IDs and the correct contentStream length
>>>> for
>>>> each is reported correctly on the client side... which is what was
>>>> expected. *
>>>>
>>>>
>>>>
>>>> As seen above the "storage exception" aligns with the byte size but it
>>>> complains the contentStream is "0" bytes?
>>>>
>>>>
>>>> We have debugged (which of course disrupts and slows things and then it
>>>> appears to work but that's effectively forcing a serial pattern), and in
>>>> all cases, the Map of properties, the contentStream, and versioningState
>>>> parameters are all correct for each on the *folder.createDocument()*
>>>> method
>>>> call.
>>>>
>>>>
>>>> Has anyone seen this?
>>>>
>>>>
>>>> We have already opened a ticket with Alfresco HOWEVER, we have also
>>>> checked
>>>> the Alfresco server side logs and because the failure is thrown by the
>>>> Client API code, there is also evidence that the stream reaching the
>>>> server
>>>> is zero thus resulting in the exception.
>>>>
>>>>
>>>> Perhaps we have to adjust how the Cmis Session is created or are we
>>>> seeing
>>>> thread safety problem? So multiple uploads are happening on different
>>>> threads to Alfresco through one Session.   Could this be part of the
>>>> issue
>>>> we are seeing? Should we create a new Session for each request?  It's our
>>>> understanding that it's expensive to create Session objects each time and
>>>> that we shouldn't have to do that.
>>>>
>>>>
>>>> Thought we'd ask here in case this has been seen before.
>>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Mark
>>>>
>>>
>>>
>>
>>
>> --
>> Igor Blanco González
>> Binovo IT Human Project
>> e-mail: iblanco@binovo.es
>> Telf. :   943493611
>> Dirección:
>>                          Astigarraga Bidea 2
>>                           Planta 6. - Ofi. 3-2
>>                     20180 Oiartzun ( Gipuzkoa )
>>
Mime
View raw message