Type: Service Pack Request
Affects Version/s: 5.2.5, S3 Connector 220.127.116.11
Oracle 12c database
Sprint:Repo 67, Repo 68
Delivery Team:Feature Teams
When Alfresco S3 Connector 18.104.22.168 and Content Store Selector are both configured in Alfresco Content Services, performing a download of content contained in the S3 content store bucket, via Share, causes Share to become unresponsive for all users of the system for the duration of the download.
ACS must have two content stores defined using Content Store Selector:
- The default store should be local and use fileContentStore bean
- The second store should be in an AWS S3 bucket and use s3ContentStoreStack bean
ACS must use Oracle 12c with either ojdbc7.jar or ojdbc8.jar.
ACS Content Cache must not contain the file being downloaded, this must be pulled directly from an S3 bucket.
Before preforming the below Steps to Reproduce, create or locate a file of around 2GB in size, this will be referred to as testFile.iso in the below steps.
In addition, while the size of the file does not effect the reproduction of this issue, a larger file increases the time taken to complete the download from S3. This increase in time period is used to highlight the duration of unresponsive behaviour from Share.
The following step must be preform to configure ACS to use S3 and Content Store Selector:
- Install ACS 5.2.5 and configure the database to use an Oracle 12c database
- Start ACS and verify functionality by preforming the following:
- Create a site called 'Test'
- Create a folder within Test, called Documents
- Upload any document to Documents
- Stop ACS
- Configure Content Store Selector by copying the attached file custom-content-store-context.xml in the following location:
- Configure the share so the aspect cm:storeSelector is visible by adding the following aspect to the list of visible aspects in share-config-custom.xml:
- Apply the S3 Connector 22.214.171.124 amp to the alfresco.war
- Configure the S3 Connector Bucket properties in alfresco-global.properties
- In alfresco-global.properties, override the following property:
ACS will not be bootstrap if dir.contentstore is not overridden. This is because ACS was first bootstrapped using a local file path. Once the S3 amp is applied, dir.contentstore will be configured to use a cloud bucket location, which will not contain the require files for a successful bootstrap.
- Start ACS
The following steps demonstrate how to generate the issue
- Upload a large file to ACS, for example the testFile.iso mention above
- Apply the cm:storeSelector aspect to testFile.iso
- Change the value of cm:storeSelector for testFile.iso to "S3 Content Store"
- ACS will now copy testFile.iso to S3, wait for this to complete
- Delete the contents of contentcache to force the S3 Connector to download the file from the configured S3 bucket
- Download testFile.iso using Share
- While testFile.iso is downloading, open any link from the Share header bar, or try and open a new browser to any Share URL
During the download of testFile.iso from S3, Share should continue to function.
During the download of testFile.iso from S3, Share and repository services (such as rest apis, webscript, etc..) is unresponsive for all users. Share only become responsive once the download of testFile.iso is completed.