Hi,
We are currently running a few tests to see how well the Alfresco replication transfer service works in a poor network environment and we are experiencing transfer failures when introducing long packet delays into a low bandwidth network.
Under normal network conditions all transfers complete successfully but, when we introduce packet delivery delays into a lower bandwidth network (e.g. 500ms packet transmit delay, 500ms packet receive delay in a 256Kb/s pipe) we get the following transfer failed error when transferring data loads of over a certain size (roughly +1 MB data size in our tests so far):
11:00:21,339 User:admin ERROR [repo.transfer.HttpClientTransmitterImpl] Received "unsuccessful" response code from target server: 500
11:00:30,587 ERROR [repo.action.AsynchronousActionExecutionQueueImpl] Failed to execute asynchronous action: Action[ id=e95972f2-eda9-4b5f-916c-6f7cb9e74506, node=workspace://SpacesStore/e95972f2-eda9-4b5f-916c-6f7cb9e74506 ]
org.alfresco.service.cmr.replication.ReplicationServiceException: 00110010 Error executing transfer - 00110008 Transfer lock timed out transferId: {0}
at org.alfresco.repo.replication.ReplicationActionExecutor.executeImpl(ReplicationActionExecutor.java:315)
at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:133)
at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:749)
at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:675)
at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1$1.execute(AsynchronousActionExecutionQueueImpl.java:443)
at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:377)
at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:251)
at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1.doWork(AsynchronousActionExecutionQueueImpl.java:452)
at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)
at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper.run(AsynchronousActionExecutionQueueImpl.java:455)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.alfresco.service.cmr.transfer.TransferException: 00110008 Transfer lock timed out transferId: {0}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.alfresco.util.json.ExceptionJsonSerializer.deserialize(ExceptionJsonSerializer.java:98)
at org.alfresco.util.json.ExceptionJsonSerializer.deserialize(ExceptionJsonSerializer.java:40)
at org.alfresco.repo.transfer.HttpClientTransmitterImpl.rehydrateError(HttpClientTransmitterImpl.java:687)
at org.alfresco.repo.transfer.HttpClientTransmitterImpl.getStatus(HttpClientTransmitterImpl.java:561)
at org.alfresco.repo.transfer.TransferServiceImpl2.transferImpl(TransferServiceImpl2.java:651)
at org.alfresco.repo.transfer.TransferServiceImpl2.transfer(TransferServiceImpl2.java:527)
at org.alfresco.repo.transfer.TransferServiceImpl2.transfer(TransferServiceImpl2.java:502)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:34)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:44)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInterceptor.java:178)
at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:137)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy114.transfer(Unknown Source)
at org.alfresco.repo.replication.ReplicationActionExecutor.executeImpl(ReplicationActionExecutor.java:283)
… 12 more
Has anyone else tried the transfer service under poor network conditions before?
Thanks in advance for any help on this matter.
Regards,
PM