I'm using the new Deployer Web Service for SDL Web 8.1 (Installed as a Windows Service) but it seems to be unable to publish any binary files to the file system.
When I publish everything to the Broker Database, publishing is successful. When I set everything to go to the file system, publishing fails. If I remove the images from the components, publishing is successful. In my publishing scenario I require everything to go to the file system.
Error message in the deployer log:
2016-06-24 09:42:12,927 ERROR DeployPipelineExecutor - Unable to start processing deployment package with transactionId: tcm:0-20600-66560
com.tridion.deployer.ProcessingException: Phase: Deployment Prepare Commit Phase failed. Unable to prepare transaction: tcm:0-20600-66560. Unable to store item inside current transaction
at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:219) [cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:107) [cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:71) [cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.TransactionManager.lambda$pipelineRunnable$1(TransactionManager.java:345) [cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.8.0_74]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.8.0_74]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_74]
Caused by: com.tridion.deployer.ProcessingException: Unable to prepare transaction: tcm:0-20600-66560
at com.tridion.deployer.phases.PreCommitPhase.handleFailure(PreCommitPhase.java:126) ~[cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.phases.PreCommitPhase.execute(PreCommitPhase.java:106) ~[cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:207) [cd_deployer-8.1.1-1008.jar:8.1.1-1008]
... 6 common frames omitted
Caused by: com.tridion.deployer.ProcessingException: Unable to store item inside current transaction
at com.tridion.deployer.phases.PreCommitPhase.runPrepare(PreCommitPhase.java:156) ~[cd_deployer-8.1.1-1008.jar:8.1.1-1008]
at com.tridion.deployer.phases.PreCommitPhase.execute(PreCommitPhase.java:101) ~[cd_deployer-8.1.1-1008.jar:8.1.1-1008]
... 7 common frames omitted
Caused by: com.tridion.broker.StorageException: Can't read file c:\tridion\dataweb8\binaryvariant\binaryurl\/Images/opengraph_tcm7-7558.jpg
at com.tridion.broker.meta.MetaUtils.readURIFromFile(MetaUtils.java:109) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.storage.filesystem.binaryvariant.FSBinaryVariantDAO.findByMetaFile(FSBinaryVariantDAO.java:435) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.storage.filesystem.binaryvariant.FSBinaryVariantDAO.findByURL(FSBinaryVariantDAO.java:223) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.storage.filesystem.binaryvariant.FSBinaryVariantDAO.findByURL(FSBinaryVariantDAO.java:212) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.storage.deploy.workers.BinaryCheckerWorker.doDeploy(BinaryCheckerWorker.java:86) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.deployer.model.transaction.TransactionLogItemWorker.doWork(TransactionLogItemWorker.java:27) ~[cd_model-8.1.1-1005.jar:8.1.1-1005]
at com.tridion.deployer.phases.PreCommitPhase.runPrepare(PreCommitPhase.java:150) ~[cd_deployer-8.1.1-1008.jar:8.1.1-1008]
... 8 common frames omitted
Caused by: java.nio.file.NoSuchFileException: c:\tridion\dataweb8\binaryvariant\binaryurl\Images\opengraph_tcm7-7558.jpg
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) ~[na:1.8.0_74]
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) ~[na:1.8.0_74]
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) ~[na:1.8.0_74]
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source) ~[na:1.8.0_74]
at java.nio.file.Files.newByteChannel(Unknown Source) ~[na:1.8.0_74]
at java.nio.file.Files.newByteChannel(Unknown Source) ~[na:1.8.0_74]
at java.nio.file.Files.readAllBytes(Unknown Source) ~[na:1.8.0_74]
at com.tridion.util.FileUtils.readFile(FileUtils.java:443) ~[cd_common_util-8.1.1-1002.jar:8.1.1-1002]
at com.tridion.util.FileUtils.readFile(FileUtils.java:417) ~[cd_common_util-8.1.1-1002.jar:8.1.1-1002]
at com.tridion.broker.meta.MetaUtils.readURIFromFile(MetaUtils.java:101) ~[cd_datalayer-8.1.1-1005.jar:8.1.1-1005]
... 14 common frames omitted
Permissions don't seem to be an issue as the page files are writing fine when there isn't an image in the component?
I'm using the out of the box Default Page Template and Default Component Template
Snippet of my storage config file for the deployer:
<Storages>
<Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultFile" defaultFilesystem="false">
<Root Path="c:\tridion\dataweb8" />
</Storage>
</Storages>
<ItemTypes defaultStorageId="defaultFile" cached="false">
</ItemTypes>
Version details:
SDL Web Content Manager - Build 8.1.0
SDL Web Content Manager Explorer - Build 8.1.0.194
Update Version - Cumulative Update 1 for SDL Web 8 (March 2016)
UPDATE
It seems that the issue is with the Metadata type mapping as my images have Metadata set against them. Setting this to defaultdb and publishing works:
<Item typeMapping="Metadata" cached="true" storageId="defaultdb"/>
Setting this to defaultFile and publishing fails:
<Item typeMapping="Metadata" cached="true" storageId="defaultFile"/>
Unfortunately this is not an option for me as I require everything to go to the filesystem