4

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

1

try to set this into your cd_storage_conf.xml:

<Storages>
    <Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultFile" defaultFilesystem="false">
        <Root Path="c:\tridion\dataweb8" />
    </Storage>
</Storages>

<ItemTypes defaultStorageId="defaultdb" cached="false">
        <Item typeMapping="Page" cached="false" storageId="defaultFile"/>
        <Item typeMapping="Binary" cached="false" storageId="defaultFile"/>
</ItemTypes>

Good Luck!

2nd Edition:

check your publication properties if you have well configured your path with backslash "\" or normal slash "/"

enter image description here

  • That does get the binaries to publish but in my scenario I want to publish everything to the file system so setting defaultStorageId="defaultdb" isn't an option. I guess this means that it must be one of the other typeMappings that is the problem? – Ryan Durkin Jun 24 '16 at 11:37
  • Yes, I think it is the Metadata typeMapping that is the issue. Setting that to defaultdb and the page publishes fine. Setting that to defaultFile and publishing fails – Ryan Durkin Jun 24 '16 at 11:39
  • Regarding your second edition update: The path is fine but in the documentation it says: "This setting is no longer relevant if you use the new publishing framework introduced in SDL Web 8." – Ryan Durkin Jun 24 '16 at 11:51
  • @Ryan - so is it that /Images/ shouldn't be being read from the publication properties but it is? and reversing to Images\ has no effect? – Dylan .. Mark Saunders Jun 27 '16 at 9:21
  • I've just had a reply from SDL and they have a hotfix for it that I am waiting to be sent and then I will apply it to see if it fixes the issue – Ryan Durkin Jun 27 '16 at 12:52
0

I can confirm that this is known defect since we encountered a similar issue with one of our other customers but I'm not sure if a hotfix was released for this.

Please reach out to Customer Support for further information about the hotfix.

0

May be you should review the Documentation about Metadata on FileSystem: http://docs.sdl.com/LiveContent/content/en-US/SDL%20Web-v5/GUID-12152D7A-A02C-4073-BE86-B188D108109E "Metadata stored on the local file system is deprecated as of SDL Tridion 2011 SP1 in favor of storage of metadata in the database. Storing metadata in a database requires database licences."

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.