5

I' m setting up Content Deployer of Web 8. When I tried to make "incoming" directory as symbolic link, error occured when starting Content Deployer. Is it possible to make deployer's incoming directory as symbolic link?

My cd_deployer_conf.xml is following.

"/usr/local/wcm-web8/deployer/incoming" is a symbolic link.

<Queue>
    <Location Path="/usr/local/wcm-web8/deployer/incoming" WindowSize="50" Workers="30" Cleanup="true" Interval="2s"/>
    <Location Path="/usr/local/wcm-web8/deployer/transactions" WindowSize="30" Workers="30" Cleanup="true" Interval="30s"/>
</Queue>
<HTTPSReceiver MaxSize="1000000000" Location="/usr/local/wcm-web8/deployer/incoming" InProcessDeploy="true"/>

Error log of Content Deployer is following.

2017-04-18 01:07:08,268 ERROR SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'binaryStorageSelector': Invocation of init method failed; nested exception is com.sdl.delivery.configuration.ConfigurationException: Binary Storage directory does not exist and could not be created
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) ~[spring-context-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) ~[spring-context-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE]
        at com.sdl.delivery.service.ServiceContainer.main(ServiceContainer.java:43) [service-container-core-8.1.1-1017.jar:8.1.1-1017]
Caused by: com.sdl.delivery.configuration.ConfigurationException: Binary Storage directory does not exist and could not be created
        at com.sdl.delivery.deployer.binarystorage.FSBinaryStorageAdapter.setup(FSBinaryStorageAdapter.java:77) ~[deployer-binary-storage-8.1.1-1024.jar:8.1.1-1024]
        at com.sdl.delivery.deployer.binarystorage.FSBinaryStorageAdapter.configure(FSBinaryStorageAdapter.java:48) ~[deployer-binary-storage-8.1.1-1024.jar:8.1.1-1024]
        at com.sdl.delivery.deployer.binarystorage.BinaryStorageSelector.configure(BinaryStorageSelector.java:52) ~[deployer-binary-storage-8.1.1-1024.jar:8.1.1-1024]
        at com.sdl.delivery.deployer.configuration.ChildConfigurationHolder.init(ChildConfigurationHolder.java:40) ~[deployer-config-8.1.1-1024.jar:8.1.1-1024]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_65]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_65]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
        ... 15 common frames omitted
Caused by: java.nio.file.FileAlreadyExistsException: /usr/local/wcm-web8/deployer/incoming
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:88) ~[na:1.8.0_65]
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[na:1.8.0_65]
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[na:1.8.0_65]
        at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384) ~[na:1.8.0_65]
        at java.nio.file.Files.createDirectory(Files.java:674) ~[na:1.8.0_65]
        at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) ~[na:1.8.0_65]
        at java.nio.file.Files.createDirectories(Files.java:727) ~[na:1.8.0_65]
        at com.sdl.delivery.deployer.binarystorage.FSBinaryStorageAdapter.setup(FSBinaryStorageAdapter.java:75) ~[deployer-binary-storage-8.1.1-1024.jar:8.1.1-1024]
        ... 25 common frames omitted

Regards,

5

Sounds like a permissions issue to me. If the deployer cannot see the symlink, i expect whatever​ user it is running as doesn't have permission.

The deployer is probably accessing the folder through standard Java APIs and should respect the symlink.

Disclaimer: never tried this myself.

  • I modified owner of the both symbolic link and liked directory to a user which runs Deployer, so I think it's not permissions issue. Anyway I'll try again by changing owner and permission. – Hirokazu Shikata Apr 19 '17 at 8:46
3

I have given a quick try by creating both soft and hard symbolic links and it works fine with SDL Web 8 deployer in my environment

Looking at your below error line,

java.nio.file.FileAlreadyExistsException: /usr/local/wcm-web8/deployer/incoming

Please check once again whether you have created a symbolic link mistakenly to point to a file rather than to a folder

  • I was thinking this could also be caused by the deployer attempting to create the directory – Rob Stevenson-Leggett Apr 18 '17 at 8:28
  • My symbolic link points to a directory, and owner of the symbolic link and the pointed directory is same as Deployer's user, they have full permission(rwxrwxrwx). Still Deployer fails to start. – Hirokazu Shikata Apr 20 '17 at 2:14
  • Can you please @Rajesh confirm the jdk version you are using, to give sense on my answer? – Raúl Escudero Apr 20 '17 at 8:45
  • I'm using jdk1.8.0_65. – Hirokazu Shikata Apr 20 '17 at 10:22
  • jdk 1.8.0_66 64 bit, good point to check whether OP has installed all the latest deployer hotfixes in his environment – Rajesh Apr 20 '17 at 12:22
1

There is a known problem with certain versions of the Java virtual machine where this exception is thrown.

So my recomendation is to update to JDK 8 and preferably the latest version, because there are certain versions of the JDK 8 in which this problem still exists.

Digging the problem, it seems to not be a problem with, cause the symlink is a file: "FileAlreadyExistsException is thrown if the file exists and is directory. In this example then the file exists but is a sym link so the exception is correct." So it seems the solution has to be in the tridion side, changing the deployer behaviour. I don't know if it exists any hotfix related to this problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.