Can someone clarify few things on deployer 8.5 setup. I did not get much clarity from docs. Though I had some ideas from Boot Camp I had in SDL.
deployer-combined does not need (mandatorily) State-Store DB instead can use Broker DB?
If not, why my installation fails in Linux with my setenv.sh having the Broker DB details for both #Contnet and #Deployer State Store?
I get below error:
2018-12-13 08:55:05,322 ERROR SpringApplication - Application startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error
creating bean with name 'entityManagerFactory' defined in class path
resource
[com/sdl/delivery/spring/configuration/StateStoreDBConfiguration.class]:
Unsatisfied dependency expressed through method 'entityManagerFactory'
parameter 0; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'dataSource' defined in class path resource
[com/sdl/delivery/spring/configuration/StateStoreDBConfiguration.class]:
Bean instantiation via factory method failed; nested exception is org.springframework.beans.
BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]:
Factory method 'dataSource' threw exception; nested exception is com.sdl.delivery.configuration.ConfigurationException:
Placeholder value is found. Please specify valid configuration for State Store database.
Can anyone explain why it does not work without State Store DB?
Any suggestion would be of great help!
Note:
When I leave #deployer section as is in setenv.sh, the log says it is needed.
With State_Store DB details my installation works and I see now my Publishing works too. Strange :)
Earlier I was getting below errors:
2018-12-13 12:51:11,956 ERROR BaseHTTPSTransportConnector - Unable to execute File retrieval on destination: http://xx.xx.xxx.xxx:8084/httpupload
org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
at org.apache.http.impl.conn.PoolingClientConnectionManager.leaseConnection(PoolingClientConnectionManager.java:230)
at org.apache.http.impl.conn.PoolingClientConnectionManager$1.getConnection(PoolingClientConnectionManager.java:199)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:424)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at com.tridion.transport.connection.connectors.BaseHTTPSTransportConnector.retrieveFileIfPresent(BaseHTTPSTransportConnector.java:258)
at com.tridion.transport.connection.connectors.DiscoveryServiceTransportConnector.retrieveFileIfPresent(DiscoveryServiceTransportConnector.java:109)
at com.tridion.transport.connection.connectors.TransportPoolConnector.retrieveFileIfPresent(TransportPoolConnector.java:80)
at com.tridion.transport.workers.EndpointMetaWorker.getMetadata(EndpointMetaWorker.java:54)
at com.tridion.transport.DestinationController.run(DestinationController.java:219)
at java.lang.Thread.run(Unknown Source)
---- Updated ---- deployer-conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<Deployer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="8.5"
xsi:noNamespaceSchemaLocation="schemas/deployer-conf.xsd">
<Pipelines>
<Pipeline Id="Tridion-Bootstrap" Action="TridionBootstrap" Verb="Content,Prepare,Commit">
<Steps>
<Step Id="TridionUnzipStep"/>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Wait" Action="Deploy,Undeploy" Verb="Wait">
<Steps>
<Step Id="TridionWaitStep"/>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Process-Deploy" Action="Deploy" Verb="Process">
<Steps>
<Step Id="SchemaDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.SchemaDeploy" Type="SchemaDeploy"/>
</Step>
<Step Id="PageDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.PageDeploy" Type="PageDeploy">
<Transformer Class="com.tridion.transformer.TCDLDefaultTransformer"/>
</Module>
</Step>
<Step Id="BinaryDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.BinaryDeploy" Type="BinaryDeploy"/>
</Step>
<Step Id="ComponentDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.ComponentDeploy" Type="ComponentDeploy"/>
</Step>
<Step Id="TemplateDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.TemplateDeploy" Type="TemplateDeploy"/>
</Step>
<Step Id="PublicationDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.PublicationDeploy" Type="PublicationDeploy"/>
</Step>
<Step Id="TaxonomyDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.TaxonomyDeploy" Type="TaxonomyDeploy"/>
</Step>
<Step Id="ComponentPresentationDeploy"
Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.ComponentPresentationDeploy"
Type="ComponentPresentationDeploy">
<Transformer Class="com.tridion.transformer.TCDLDefaultTransformer"/>
</Module>
</Step>
<Step Id="StructureGroupDeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.StructureGroupDeploy" Type="StructureGroupDeploy"/>
</Step>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Process-Undeploy" Action="Undeploy" Verb="Process">
<Steps>
<Step Id="PageUndeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.PageUndeploy" Type="PageUndeploy"/>
</Step>
<Step Id="ComponentPresentationUndeploy"
Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.ComponentPresentationUndeploy"
Type="ComponentPresentationUndeploy"/>
</Step>
<Step Id="TaxonomyUndeploy" Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.TaxonomyUndeploy" Type="TaxonomyUndeploy"/>
</Step>
<Step Id="StructureGroupUndeploy"
Factory="com.sdl.delivery.deployer.steps.TridionExecutableStepFactory">
<Module Class="com.tridion.deployer.modules.StructureGroupUndeploy" Type="StructureGroupUndeploy"/>
</Step>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-PreCommit-TX" Action="Deploy,Undeploy" Verb="PreCommit">
<Steps>
<Step Id="TridionPreCommitStep"/>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Commit-TX" Action="Deploy,Undeploy" Verb="Commit">
<Steps>
<Step Id="TridionCommitStep">
<RetryPoint PipelineId="Tridion-PreCommit-TX" StepId="TridionPreCommitStep"/>
</Step>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Rollback-TX" Action="Deploy,Undeploy" Verb="Rollback">
<Steps>
<Step Id="TridionRollbackStep"/>
</Steps>
</Pipeline>
<Pipeline Id="Tridion-Cleanup" Action="Deploy,Undeploy" Verb="*">
<Steps>
<Step Id="TridionCleanupStep"/>
</Steps>
</Pipeline>
</Pipelines>
<!-- Binary Storage configuration -->
<BinaryStorage Id="PackageStorage" Adapter="FileSystem">
<Property Name="Path" Value="/deployer-combined/binary"/>
</BinaryStorage>
<!--
Redis Binary Storage configuration.
Password is not supported by Amazon ElastiCache.
-->
<!--
<BinaryStorage Id="RedisStorage" Adapter="RedisBlobStorage">
<Property Name="Host" Value="${storageHost}"/>
<Property Name="Port" Value="${storagePort}"/>
<Property Name="Password" Value="encrypted:HzfQh9wYwAKShDxCm4DnnBnysAz9PtbDMFXMbPszSVY="/>
<Property Name="Timeout" Value="20000"/>
</BinaryStorage>
-->
<!-- State store configuration -->
<!--
Configuration example for MSSQL Database
The Storage element specifies database settings for Deployer State Store Database.
For the MSSQL the minimum set of properties are:
host: name of the server that hosts the database
port: port number (default 1433) used for TCP/IP connections to the database
database: name of the database to access
user: username used to access the database
password: password used to access the database
(Optional)
Also, for MSSQL we support extended connection properties that are related to MSSQL.
For example:
<Property Name="encrypt" Value="true"/>
In this particular case, MSSQL will specify SSL encryption for all the data sent between
the client and the server if the server has a certificate installed.
You are able to specify as much extended properties as you want.
<State>
<Storage Adapter="mssql" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" >
<Property Name="host" Value="${dbhost}"/>
<Property Name="port" Value="1433"/>
<Property Name="database" Value="${dbname}"/>
<Property Name="user" Value="${dbuser}"/>
<Property Name="password" Value="${dbpassword}"/>
</Storage>
</State>
-->
<!--
Configuration example for Oracle SQL Database
The Storage element specifies database settings for Deployer State Store Database.
For the Oracle SQL the minimum set of properties are:
host: name of the server that hosts the database
port: port number (default 1521) used for TCP/IP connections to the database
database: name of the database to access
user: username used to access the database
password: password used to access the database
Currently, we are not supporting extended connection properties for Oracle SQL Database.
<State>
<Storage Adapter="oracle" driver="oracle.jdbc.driver.OracleDriver">
<Property Name="host" Value="${dbhost}"/>
<Property Name="port" Value="1521"/>
<Property Name="database" Value="${dbname}"/>
<Property Name="user" Value="${dbuser}"/>
<Property Name="password" Value="${dbpassword}"/>
</Storage>
</State>
-->
<State>
<Storage Adapter="mssql" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver">
<Property Name="host" Value="xxx.xx.xx.xxx"/>
<Property Name="port" Value="1433"/>
<Property Name="database" Value="State_Store"/>
<Property Name="user" Value="xxxxxxxxxxx"/>
<Property Name="password" Value="xxxxxxxxxxxxx#"/>
</Storage>
</State>
<!-- Queues configuration -->
<Queues>
<!-- Queues default configuration for Filesystem-->
<Queue Default="true" Verbs="Content" Adapter="FileSystem" Id="ContentQueue">
<Property Name="Destination" Value="/deployer-combined/queue/incoming"/>
<!-- Optional property to set number of workers
<Property Name="Workers" Value="11"/> -->
</Queue>
<Queue Verbs="Commit,Rollback" Adapter="FileSystem" Id="CommitQueue">
<Property Name="Destination" Value="/deployer-combined/queue/incoming/FinalTX"/>
<!-- Optional property to set number of workers
<Property Name="Workers" Value="11"/> -->
</Queue>
<Queue Verbs="Prepare" Adapter="FileSystem" Id="PrepareQueue">
<Property Name="Destination" Value="/deployer-combined/queue/incoming/Prepare"/>
<!-- Optional property to set number of workers
<Property Name="Workers" Value="11"/> -->
</Queue>
<Adapter Id="FileSystem">
<!-- optional property to set polling interval
<Property Name="LocationPollingInterval" Value="2s"/> -->
</Adapter>
<!-- Queues default configuration for JMS -->
<!--
<Queue Default="true" Verbs="Content" Adapter="JMS" Id="ContentQueue">
<Property Name="Workers" Value="11"/>
</Queue>
<Queue Verbs="Commit,Rollback" Adapter="JMS" Id="CommitQueue">
<Property Name="Workers" Value="11"/>
</Queue>
<Queue Verbs="Prepare" Adapter="JMS" Id="PrepareQueue">
<Property Name="Workers" Value="11"/>
</Queue>
-->
<!-- ActiveMQ default adapter configuration for JMS -->
<!--
<Adapter Id="JMS">
<Property Name="JMSConnectionFactoryBuilderClass"
Value="com.sdl.delivery.spring.configuration.jms.ActiveMQConnectionFactoryBuilder" />
<Property Name="JMSUri" Value="tcp://activemq-host:port" />
//JMS optional properties. Required for remote activeMQ
<Property Name="Username" Value="admin"/>
<Property Name="Password" Value="admin"/>
//JMS optional property. Put the value in milliseconds. Used to fine tune queue sensitivity.
<Property Name="ReceiveTimeout" Value="200"/>
</Adapter>
-->
<!-- AmazonSQS default adapter configuration for JMS -->
<!--
<Adapter Id="JMS">
<Property Name="JMSConnectionFactoryBuilderClass"
Value="com.sdl.delivery.spring.configuration.jms.AmazonSQSConnectionFactoryBuilder" />
<Property Name="JMSUri" Value="https://sqs.eu-central-1.amazonaws.com/42" />
//Required to create connection with Amazon SQS
<Property Name="Username" Value="AccessKey"/>
<Property Name="Password" Value="SecretKey"/>
//JMS optional property. Put the value in milliseconds. Used to fine tune queue sensitivity.
<Property Name="ReceiveTimeout" Value="200"/>
</Adapter>
-->
<!-- Workers configuration properties -->
<Workers>
<!-- Optional configuration properties
<Property Name="QueuePollingInterval" Value="2s"/>
<Property Name="RetriesInterval" Value="100ms"/>
<Property Name="MaxRetries" Value="11"/>
<Property Name="Cleanup" Value="true"/> -->
</Workers>
</Queues>
<!-- RMI Channel Port -->
<RMIChannel ListenerPort="1050"/>
<!-- License Path -->
<License Path="/ContentDelivery/cd_licenses.xml"/>
</Deployer>
With the above xml my setup works, I can successfully publish, but when I try to use the 8.5.0 Broker DB for State_Store I get the placeholder found error!