0

We have migrated SDL Tridion 2013 SP1 to Web 8.5 and we configured SI4T AWS Cloud Search and SI4T Solr Search.

When I configured Indexers Individually I have not faced any issues, when I configured Both Indexers together I have received below error for Solr.

multiple values encountered for non multiValued field skill

Error Trace:

2018-12-26 16:21:32,602 ERROR TridionCommitStep - Commit failed for execution id:tcm:0-2419703-66560
com.sdl.delivery.deployer.api.processing.exception.ProcessingException: Unable to commit transactions. ExecutionId:tcm:0-2419703-66560
    at com.sdl.delivery.deployer.steps.TridionTransactionalExecutableStep.commitTransaction(TridionTransactionalExecutableStep.java:78)
    at com.sdl.delivery.deployer.steps.TridionCommitStep.process(TridionCommitStep.java:28)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.execute(StepActor.scala:72)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.com$sdl$delivery$deployer$engine$pipeline$actor$StepActor$$processStep(StepActor.scala:57)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor$$anonfun$receive$1.applyOrElse(StepActor.scala:40)
    at akka.actor.Actor$class.aroundReceive(Actor.scala:480)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.aroundReceive(StepActor.scala:26)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
    at akka.actor.ActorCell.invoke(ActorCell.scala:495)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
    at akka.dispatch.Mailbox.run(Mailbox.scala:224)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.tridion.broker.StorageException: Commit failed for transaction tcm:0-2419703-66560 because of ERROR: [doc=dcp:32-289919-288708] multiple values encountered for non multiValued field skill: [listening, vocabulary]
    at com.tridion.storage.management.TransactionManagerImpl.commitTransaction(TransactionManagerImpl.java:70)
    at com.tridion.storage.StorageManagerFactory.commitTransaction(StorageManagerFactory.java:226)
    at com.sdl.delivery.deployer.steps.TridionTransactionalExecutableStep.commitTransaction(TridionTransactionalExecutableStep.java:76)
    ... 13 common frames omitted
Caused by: org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: ERROR: [doc=dcp:32-289919-288708] multiple values encountered for non multiValued field skill: [listening, vocabulary]
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:424)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:180)
    at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
    at org.si4t.solr.SolrIndexDispatcher.addDocuments(SolrIndexDispatcher.java:277)
    at org.si4t.solr.SolrIndexer.dispatchAddContentToSolr(SolrIndexer.java:445)
    at org.si4t.solr.SolrIndexer.commitAddContentToSolr(SolrIndexer.java:422)
    at org.si4t.solr.SolrIndexer.commit(SolrIndexer.java:307)
    at com.tridion.storage.si4t.SearchIndexProcessor.triggerIndexing(SearchIndexProcessor.java:274)
    at com.tridion.storage.si4t.JPASearchDAOFactory.commitTransaction(JPASearchDAOFactory.java:189)
    at com.tridion.storage.management.TransactionManagerImpl.commitTransaction(TransactionManagerImpl.java:65)
    ... 15 common frames omitted

AWS Cloud Search Items published without any issues.

Updated CD Storage Config

    <?xml version="1.0" encoding="UTF-8"?><Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="8.5" xsi:noNamespaceSchemaLocation="schemas/cd_storage_conf.xsd">
        <Namespace default="tcm"/>
        <Global>
            <ObjectCache Enabled="false">
                <Policy Class="com.tridion.cache.LRUPolicy" Type="LRU">
                    <Param Name="MemSize" Value="16mb"/>
                </Policy>
                <Features>
                    <Feature Class="com.tridion.cache.DependencyTracker" Type="DependencyTracker"/>
                </Features>
            </ObjectCache>
            <Storages>
                <StorageBindings>
                    <Bundle src="SearchDAOBundle.xml"/>
                </StorageBindings>
                <Storage Class="com.tridion.storage.si4t.JPASearchDAOFactory" Id="sqlserver" Type="persistence" dialect="MSSQL">
                    <Pool CheckoutTimeout="120" IdleTimeout="120" MonitorInterval="60" Size="5" Type="jdbc"/>
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="SERVERNAME"/>
                        <Property Name="portNumber" Value="9561"/>
                        <Property Name="databaseName" Value="Tridion_Broker_Live"/>
                        <Property Name="user" Value="TridionBroker"/>
                        <Property Name="password" Value="Tridion"/>
                    </DataSource>
                    <Indexer Class="org.si4t.solr.SolrIndexer" DefaultCoreUrl="http://we100/solr/web8_shard1_replica1" DocExtensions="txt" Mode="http">
                        <Urls>
                            <!-- SI4T: 
                                        The Value attribute is the complete URL to a Solr Core
                                        The Id attribute denotes a unique Tridion Publication Id
                                -->
                            <Url Id="123" Value="http://we100/solr/web8_shard1_replica1"/>
                        </Urls>
                    </Indexer>
                </Storage>
<Storage Class="com.tridion.storage.si4t.JPASearchDAOFactory" Id="defaultdb" Type="persistence" dialect="MSSQL">
                    <Pool CheckoutTimeout="120" IdleTimeout="120" MonitorInterval="60" Size="5" Type="jdbc"/>
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="SERVERNAME"/>
                        <Property Name="portNumber" Value="9561"/>
                        <Property Name="databaseName" Value="Tridion_Broker_Live"/>
                        <Property Name="user" Value="TridionBroker"/>
                        <Property Name="password" Value="Tridion"/>
                    </DataSource>
                    <Indexer Class="org.si4t.cloudsearch.CloudSearchIndexer" DocExtensions="txt" access_key_id="****" authentication="explicit" documentEndpoint="****.eu-west-1.cloudsearch.amazonaws.com" indexBatchSize="20" secret_access_key="****"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultFile" Type="filesystem" defaultFilesystem="false">
                    <Root Path="D:\DevLive\live"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="cie_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\C\SearchIndex\Resources"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="ocr_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\OC\SearchIndex\Resources"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="ce_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\EL\SearchIndex\Resources"/>
                </Storage>
            </Storages>
            <Transaction MonitorInterval="5000" Timeout="10000000"/>
        </Global>
        <ItemTypes cached="false" defaultStorageId="defaultdb">
            <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
            <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
            <Publication Id="31" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".xml" storageId="cie_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="33" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".xml" storageId="ocr_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="32" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".htm" storageId="defaultdb" typeMapping="Page"/>
                <Item cached="false" itemExtension=".xml" storageId="ce_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="141" cached="true" defaultStorageId="defaultdb"/>
            <Publication Id="142" cached="true" defaultStorageId="defaultdb"/>
            <Publication Id="123" cached="true" defaultStorageId="sqlserver"/>
        </ItemTypes>
        <ConfigRepository CacheEnabled="true" CacheExpirationDuration="600" ClientId="registration" ClientSecret="encrypted:****" ConnectionTimeout="20000" ServiceMonitorPollDuration="10" ServiceUri="http://DOMAIN-dev.:9082/discovery.svc" TokenServiceUrl="http://DOMAIN-dev.:9082/token.svc">
            <Roles>
                <Role Name="DeployerCapability" Url="http://DOMAIN-dev.:9084/httpupload">
                    <Property Name="encoding" Value="UTF-8"/>
                </Role>
            </Roles>
        </ConfigRepository>
    </Configuration>

Search DAO Bundle

<?xml version="1.0" encoding="UTF-8"?>
<StorageDAOBundles>
    <StorageDAOBundle type="persistence">
        <StorageDAO typeMapping="Page" class="com.tridion.storage.si4t.dao.JPASearchPageDAO"/>
        <StorageDAO typeMapping="Binary" class="com.tridion.storage.si4t.dao.JPASearchBinaryContentDAO"/>
        <StorageDAO typeMapping="ComponentPresentation" class="com.tridion.storage.si4t.dao.JPASearchComponentPresentationDAO"/>
    </StorageDAOBundle>
</StorageDAOBundles>

New error trace with sqlserver storage node as 1st in sequence

2019-01-03 03:29:18,645 ERROR StepActor - Step 'ComponentDeploy' for 'tcm:0-2419739-66560': 
com.sdl.delivery.deployer.api.processing.exception.ProcessingException: Could not deploy component  [Component id=tcm:123-379958-16 title=OCR AS/A Level Classical Greek schema=tcm:123-208403-8]
    at com.sdl.delivery.deployer.steps.TridionDeployerStepAdapter.process(TridionDeployerStepAdapter.java:101)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.execute(StepActor.scala:72)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.com$sdl$delivery$deployer$engine$pipeline$actor$StepActor$$processStep(StepActor.scala:57)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor$$anonfun$receive$1.applyOrElse(StepActor.scala:40)
    at akka.actor.Actor$class.aroundReceive(Actor.scala:480)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.aroundReceive(StepActor.scala:26)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
    at akka.actor.ActorCell.invoke(ActorCell.scala:495)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
    at akka.dispatch.Mailbox.run(Mailbox.scala:224)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.tridion.broker.StorageException: No Data Access Object Factory for defaultdb.  Check if the default file system is properly defined and ItemTypes defaultStorageId is correct.
    at com.tridion.storage.management.StorageManagerImpl.getDAOFactoryForStorageId(StorageManagerImpl.java:306)
    at com.tridion.storage.management.StorageManagerImpl.getOriginalDAO(StorageManagerImpl.java:175)
    at com.tridion.storage.management.StorageManagerImpl.getDAO(StorageManagerImpl.java:151)
    at com.tridion.storage.StorageManagerFactory.getDAO(StorageManagerFactory.java:175)
    at com.tridion.storage.StorageManagerFactory.getDAO(StorageManagerFactory.java:121)
    at com.tridion.storage.deploy.ComponentMetaHandler.deploy(ComponentMetaHandler.java:56)
    at com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:101)
    at com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:69)
    at com.tridion.deployer.modules.ComponentDeploy.processComponent(ComponentDeploy.java:167)
    at com.tridion.deployer.modules.ComponentDeploy.process(ComponentDeploy.java:101)
    at com.sdl.delivery.deployer.steps.TridionDeployerStepAdapter.process(TridionDeployerStepAdapter.java:91)
    ... 12 common frames omitted

New error trace with sqlserver storage node as 2nd in sequence

2019-01-03 03:35:11,728 ERROR StepActor - Step 'ComponentDeploy' for 'tcm:0-2419741-66560': 
com.sdl.delivery.deployer.api.processing.exception.ProcessingException: Could not deploy component  [Component id=tcm:32-289781-16 title=Activity - c1g002 - Which as a relative pronoun schema=tcm:32-288558-8]
    at com.sdl.delivery.deployer.steps.TridionDeployerStepAdapter.process(TridionDeployerStepAdapter.java:101)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.execute(StepActor.scala:72)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.com$sdl$delivery$deployer$engine$pipeline$actor$StepActor$$processStep(StepActor.scala:57)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor$$anonfun$receive$1.applyOrElse(StepActor.scala:40)
    at akka.actor.Actor$class.aroundReceive(Actor.scala:480)
    at com.sdl.delivery.deployer.engine.pipeline.actor.StepActor.aroundReceive(StepActor.scala:26)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
    at akka.actor.ActorCell.invoke(ActorCell.scala:495)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
    at akka.dispatch.Mailbox.run(Mailbox.scala:224)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.tridion.broker.StorageException: No Data Access Object Factory for sqlserver.  Check if the default file system is properly defined and ItemTypes defaultStorageId is correct.
    at com.tridion.storage.management.StorageManagerImpl.getDAOFactoryForStorageId(StorageManagerImpl.java:306)
    at com.tridion.storage.management.StorageManagerImpl.getOriginalDAO(StorageManagerImpl.java:175)
    at com.tridion.storage.management.StorageManagerImpl.getDAO(StorageManagerImpl.java:151)
    at com.tridion.storage.StorageManagerFactory.getDAO(StorageManagerFactory.java:175)
    at com.tridion.storage.StorageManagerFactory.getDAO(StorageManagerFactory.java:121)
    at com.tridion.storage.deploy.ComponentMetaHandler.deploy(ComponentMetaHandler.java:56)
    at com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:101)
    at com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:69)
    at com.tridion.deployer.modules.ComponentDeploy.processComponent(ComponentDeploy.java:167)
    at com.tridion.deployer.modules.ComponentDeploy.process(ComponentDeploy.java:101)
    at com.sdl.delivery.deployer.steps.TridionDeployerStepAdapter.process(TridionDeployerStepAdapter.java:91)
    ... 12 common frames omitted

Based on Input received to locate exact error i followed below approach

I created 2 storage nodes without Indexer and published items related to Solr and AWS both are successful

When I add Indexers for both and when sqlserver node as 1st in sequence, i have received

No Data Access Object Factory for defaultdb.

When I add defaultdb node as 1st in sequence, i have received

No Data Access Object Factory for sqlserver

Error log when configured FSSearchDAOFactory

2019-01-05 10:48:06,887 DEBUG EntityPrinter - com.sdl.delivery.deployer.jpa.domain.PipelineEntity{executionEntity=com.sdl.delivery.deployer.jpa.domain.ExecutionEntity#tcm:0-2419749-66560, startTime=2019-01-05T10:47:58.620Z[Europe/London], stepEntities=[com.sdl.delivery.deployer.jpa.domain.StepEntity#component[executionId,pipelineId,stepId]{executionId=tcm:0-2419749-66560, stepId=ComponentDeploy, pipelineId=Tridion-Process-Deploy}, com.sdl.delivery.deployer.jpa.domain.StepEntity#component[executionId,pipelineId,stepId]{executionId=tcm:0-2419749-66560, stepId=BinaryDeploy, pipelineId=Tridion-Process-Deploy}, com.sdl.delivery.deployer.jpa.domain.StepEntity#component[executionId,pipelineId,stepId]{executionId=tcm:0-2419749-66560, stepId=SchemaDeploy, pipelineId=Tridion-Process-Deploy}, com.sdl.delivery.deployer.jpa.domain.StepEntity#component[executionId,pipelineId,stepId]{executionId=tcm:0-2419749-66560, stepId=PageDeploy, pipelineId=Tridion-Process-Deploy}], endTime=2019-01-05T10:48:01.513Z[Europe/London], statusMessage=Error creating bean with name 'storageFactoryConfigurationLoader': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'FSSearchDAOFactory' is defined, pipelinePK=component[executionId,pipelineId]{executionId=tcm:0-2419749-66560, pipelineId=Tridion-Process-Deploy}, status=FAILED}

CD Storage Extension DEBUG logs shows the reason for why it is failing with 2 storage nodes

2019-01-05 11:07:33,982 INFO  SearchIndexProcessor - Configuration is: Storage(Class=com.tridion.storage.si4t.JPASearchDAOFactory, Id=defaultdb, Type=persistence, dialect=MSSQL)[Pool(CheckoutTimeout=120, IdleTimeout=120, MonitorInterval=60, Size=5, Type=jdbc), DataSource(Class=com.microsoft.sqlserver.jdbc.SQLServerDataSource)[Property(Name=serverName, Value=SERVERNAME\SQL01), Property(Name=portNumber, Value=9561), Property(Name=databaseName, Value=Tridion_Broker_Live), Property(Name=user, Value=TridionBrokerUser), Property(Name=password, Value=Tridion)], Indexer(Class=org.si4t.solr.SolrIndexer, DefaultCoreUrl=http://servername/solr/shard1_replica1, DocExtensions=txt, Mode=http)]
2019-01-05 11:07:33,982 INFO  SearchIndexProcessor - Using: org.si4t.solr.SolrIndexer as search index class for storageId: defaultdb
2019-01-05 11:07:33,982 INFO  SearchIndexProcessor - Loading org.si4t.solr.SolrIndexer
2019-01-05 11:07:33,997 DEBUG SolrIndexer - Configuration is: Storage(Class=com.tridion.storage.si4t.JPASearchDAOFactory, Id=defaultdb, Type=persistence, dialect=MSSQL)[Pool(CheckoutTimeout=120, IdleTimeout=120, MonitorInterval=60, Size=5, Type=jdbc), DataSource(Class=com.microsoft.sqlserver.jdbc.SQLServerDataSource)[Property(Name=serverName, Value=SERVERNAME\SQL01), Property(Name=portNumber, Value=9561), Property(Name=databaseName, Value=Tridion_Broker_Live), Property(Name=user, Value=TridionBrokerUser), Property(Name=password, Value=Tridion)], Indexer(Class=org.si4t.solr.SolrIndexer, DefaultCoreUrl=http://Servername/solr/shard1_replica1, DocExtensions=txt, Mode=http)]
2019-01-05 11:07:33,997 INFO  SolrIndexer - Setting defaultCoreUrl to: http://Servername/solr/shard1_replica1
2019-01-05 11:07:33,997 INFO  SearchIndexProcessor - Configured: org.si4t.solr.SolrIndexer
2019-01-05 11:07:33,997 INFO  SearchIndexProcessor - Loaded: org.si4t.solr.SolrIndexer
2019-01-05 11:07:35,341 DEBUG JPASearchComponentPresentationDAO - JPASearchComponentPresentationDAO Init.
2019-01-05 11:07:35,403 DEBUG JPASearchPageDAO - JPASearchPageDAO init.
2019-01-05 11:07:35,638 INFO  SearchIndexProcessor - Configuration is: Storage(Class=com.tridion.storage.si4t.JPASearchDAOFactory, Id=sqlserver, Type=persistence, dialect=MSSQL)[Pool(CheckoutTimeout=120, IdleTimeout=120, MonitorInterval=60, Size=5, Type=jdbc), DataSource(Class=com.microsoft.sqlserver.jdbc.SQLServerDataSource)[Property(Name=serverName, Value=SERVERName\SQL01), Property(Name=portNumber, Value=9561), Property(Name=databaseName, Value=Tridion_Broker_Live), Property(Name=user, Value=TridionBrokerUser), Property(Name=password, Value=Tridion)], Indexer(Class=org.si4t.cloudsearch.CloudSearchIndexer, DocExtensions=txt, access_key_id=AKIA, authentication=explicit, documentEndpoint=cloudsearch.amazonaws.com, indexBatchSize=20, secret_access_key=k7fOqM9/pS)]
2019-01-05 11:07:35,638 INFO  SearchIndexProcessor - Using: org.si4t.cloudsearch.CloudSearchIndexer as search index class for storageId: defaultdb
2019-01-05 11:07:35,653 DEBUG JPASearchComponentPresentationDAO - JPASearchComponentPresentationDAO Init.
2019-01-05 11:07:35,653 DEBUG JPASearchPageDAO - JPASearchPageDAO init.
2019-01-05 11:07:35,669 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-05 11:07:35,669 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-05 11:07:35,685 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-05 11:07:35,685 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-05 11:07:35,685 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-05 11:07:35,685 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-05 11:07:35,685 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-05 11:07:35,685 DEBUG FSSearchPageDAO - FSSearchPageDAO init.

Storage extension Debug logs

2019-01-16 13:11:03,669 INFO  SearchIndexProcessor - Configuration is: Storage(Class=com.tridion.storage.si4t.JPASearchDAOFactory, Id=sqlserver, Type=persistence, dialect=MSSQL)[Pool(CheckoutTimeout=120, IdleTimeout=120, MonitorInterval=60, Size=5, Type=jdbc), DataSource(Class=com.microsoft.sqlserver.jdbc.SQLServerDataSource)[Property(Name=serverName, Value=ServerName), Property(Name=portNumber, Value=9561), Property(Name=databaseName, Value=Tridion_Broker_Live), Property(Name=user, Value=TridionBrokerUser), Property(Name=password, Value=********)], Indexer(Class=org.si4t.cloudsearch.CloudSearchIndexer, DocExtensions=txt, access_key_id=AKIAIKEW6HC74334A75Q, authentication=explicit, documentEndpoint=cloudsearch.amazonaws.com, indexBatchSize=20, secret_access_key=********)]
2019-01-16 13:11:03,669 INFO  SearchIndexProcessor - Using: org.si4t.cloudsearch.CloudSearchIndexer as search index class for storageId: sqlserver
2019-01-16 13:11:03,669 INFO  SearchIndexProcessor - Loading org.si4t.cloudsearch.CloudSearchIndexer
2019-01-16 13:11:03,669 INFO  SearchIndexProcessor - Configured: org.si4t.cloudsearch.CloudSearchIndexer
2019-01-16 13:11:03,669 INFO  SearchIndexProcessor - Loaded: org.si4t.cloudsearch.CloudSearchIndexer
2019-01-16 13:11:05,498 DEBUG JPASearchComponentPresentationDAO - JPASearchComponentPresentationDAO Init.
2019-01-16 13:11:05,560 DEBUG JPASearchPageDAO - JPASearchPageDAO init.
2019-01-16 13:11:05,763 INFO  SearchIndexProcessor - Configuration is: Storage(Class=com.tridion.storage.si4t.JPASearchDAOFactory, Id=defaultdb, Type=persistence, dialect=MSSQL)[Pool(CheckoutTimeout=120, IdleTimeout=120, MonitorInterval=60, Size=5, Type=jdbc), DataSource(Class=com.microsoft.sqlserver.jdbc.SQLServerDataSource)[Property(Name=serverName, Value=ServerName), Property(Name=portNumber, Value=9561), Property(Name=databaseName, Value=Tridion_Broker_Live), Property(Name=user, Value=TridionBrokerUser), Property(Name=password, Value=********)], Indexer(Class=org.si4t.solr.SolrIndexer, DefaultCoreUrl=http://ServerName/solr/, DocExtensions=txt, Mode=http)[Urls[SI4T: 
                                    The Value attribute is the complete URL to a Solr Core
                                    The Id attribute denotes a unique Tridion Publication IdUrl(Id=123, Value=http://ServerName/solr/)]]]
2019-01-16 13:11:05,763 INFO  SearchIndexProcessor - Using: org.si4t.solr.SolrIndexer as search index class for storageId: sqlserver
2019-01-16 13:11:05,763 DEBUG JPASearchComponentPresentationDAO - JPASearchComponentPresentationDAO Init.
2019-01-16 13:11:05,763 DEBUG JPASearchPageDAO - JPASearchPageDAO init.
2019-01-16 13:11:05,779 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-16 13:11:05,794 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-16 13:11:05,794 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-16 13:11:05,794 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-16 13:11:05,794 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-16 13:11:05,794 DEBUG FSSearchPageDAO - FSSearchPageDAO init.
2019-01-16 13:11:05,810 DEBUG FSSearchComponentPresentationDAO - FSSearchComponentPresentationDAO Init.
2019-01-16 13:11:05,810 DEBUG FSSearchPageDAO - FSSearchPageDAO init.

can we configure both AWS and Solr Indexer together? Please help me

7
  • I don't think the same storage to have multiple si4t indexers will work, why you need same publication index data details looking to index in both solr and aws cloudsearch, instead you can define separate storage id specific to publication id to index
    – Velmurugan
    Dec 31, 2018 at 8:23
  • Thanks Velmurugan, I have tried by configuring 2 storage nodes as per below update from Github github.com/SI4T/SI4T/issues/19 Still I am having same issue, the first storage configured Indexer will work fine and second one will fail. Jan 2, 2019 at 15:43
  • Please edit your question and share the latest error log information?
    – Velmurugan
    Jan 2, 2019 at 19:36
  • Hi Velmurugan, I updated logs and configuration Jan 3, 2019 at 6:22
  • Updated logs have only DEBUG not ERROR message
    – Velmurugan
    Jan 5, 2019 at 11:12

1 Answer 1

1

Try with this updated cd_storage_config and Search DAO bundle config

<?xml version="1.0" encoding="UTF-8"?><Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="8.5" xsi:noNamespaceSchemaLocation="schemas/cd_storage_conf.xsd">
        <Namespace default="tcm"/>
        <Global>
            <ObjectCache Enabled="false">
                <Policy Class="com.tridion.cache.LRUPolicy" Type="LRU">
                    <Param Name="MemSize" Value="16mb"/>
                </Policy>
                <Features>
                    <Feature Class="com.tridion.cache.DependencyTracker" Type="DependencyTracker"/>
                </Features>
            </ObjectCache>
            <Storages>
                <StorageBindings>
                    <Bundle src="SearchDAOBundle.xml"/>
                </StorageBindings>
                <Storage Class="com.tridion.storage.si4t.JPASearchDAOFactory" Id="sqlserver" Type="persistence" dialect="MSSQL">
                    <Pool CheckoutTimeout="120" IdleTimeout="120" MonitorInterval="60" Size="5" Type="jdbc"/>
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="SERVERNAME"/>
                        <Property Name="portNumber" Value="9561"/>
                        <Property Name="databaseName" Value="Tridion_Broker_Live"/>
                        <Property Name="user" Value="TridionBroker"/>
                        <Property Name="password" Value="Tridion"/>
                    </DataSource>
                    <Indexer Class="org.si4t.solr.SolrIndexer" DefaultCoreUrl="http://we100/solr/web8_shard1_replica1" DocExtensions="txt" Mode="http" />
                </Storage>
                <Storage Class="com.tridion.storage.si4t.JPASearchDAOFactory" Id="defaultdb" Type="persistence" dialect="MSSQL">
                    <Pool CheckoutTimeout="120" IdleTimeout="120" MonitorInterval="60" Size="5" Type="jdbc"/>
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="SERVERNAME"/>
                        <Property Name="portNumber" Value="9561"/>
                        <Property Name="databaseName" Value="Tridion_Broker_Live"/>
                        <Property Name="user" Value="TridionBroker"/>
                        <Property Name="password" Value="Tridion"/>
                    </DataSource>
                    <Indexer Class="org.si4t.cloudsearch.CloudSearchIndexer" DocExtensions="txt" access_key_id="****" authentication="explicit" documentEndpoint="****.eu-west-1.cloudsearch.amazonaws.com" indexBatchSize="20" secret_access_key="****"/>
                </Storage>
                <Storage Class="com.tridion.storage.si4t.FSSearchDAOFactory" Id="defaultFile" Type="filesystem" defaultFilesystem="false">
                    <Root Path="D:\DevLive\live"/>
                    <Indexer Class="org.si4t.solr.SolrIndexer" DefaultCoreUrl="http://we100/solr/web8_shard1_replica1" DocExtensions="txt" Mode="http" />
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="cie_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\C\SearchIndex\Resources"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="ocr_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\OC\SearchIndex\Resources"/>
                </Storage>
                <Storage Class="com.tridion.storage.filesystem.FSDAOFactory" Id="ce_index_files" Type="filesystem" defaultFilesystem="false" defaultStorage="false">
                    <Root Path="D:\DevLive\live\EL\SearchIndex\Resources"/>
                </Storage>
            </Storages>
            <Transaction MonitorInterval="5000" Timeout="10000000"/>
        </Global>
        <ItemTypes cached="false" defaultStorageId="defaultdb">
            <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
            <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
            <Publication Id="31" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".xml" storageId="cie_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="33" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".xml" storageId="ocr_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="32" cached="true" defaultStorageId="defaultdb">
                <Item cached="true" storageId="defaultFile" typeMapping="Page"/>
                <Item cached="true" storageId="defaultFile" typeMapping="Binary"/>
                <Item cached="false" itemExtension=".htm" storageId="defaultdb" typeMapping="Page"/>
                <Item cached="false" itemExtension=".xml" storageId="ce_index_files" typeMapping="ComponentPresentation"/>
            </Publication>
            <Publication Id="141" cached="true" defaultStorageId="defaultdb"/>
            <Publication Id="142" cached="true" defaultStorageId="defaultdb"/>
            <Publication Id="123" cached="true" defaultStorageId="sqlserver"/>
        </ItemTypes>
        <ConfigRepository CacheEnabled="true" CacheExpirationDuration="600" ClientId="registration" ClientSecret="encrypted:****" ConnectionTimeout="20000" ServiceMonitorPollDuration="10" ServiceUri="http://DOMAIN-dev.:9082/discovery.svc" TokenServiceUrl="http://DOMAIN-dev.:9082/token.svc">
            <Roles>
                <Role Name="DeployerCapability" Url="http://DOMAIN-dev.:9084/httpupload">
                    <Property Name="encoding" Value="UTF-8"/>
                </Role>
            </Roles>
        </ConfigRepository>
    </Configuration>

SearchDAOBundle.xml

<?xml version="1.0" encoding="UTF-8"?>
<StorageDAOBundle type="filesystem">
    <StorageDAO typeMapping="Page" class="com.tridion.storage.si4t.dao.FSSearchPageDAO"/>
    <StorageDAO typeMapping="Binary" class="com.tridion.storage.si4t.dao.FSSearchBinaryContentDAO"/>
    <StorageDAO typeMapping="ComponentPresentation" class="com.tridion.storage.si4t.dao.FSSearchComponentPresentationDAO"/>
</StorageDAOBundle>
<StorageDAOBundle type="persistence">
    <StorageDAO typeMapping="Page" class="com.tridion.storage.si4t.dao.JPASearchPageDAO"/>
    <StorageDAO typeMapping="Binary" class="com.tridion.storage.si4t.dao.JPASearchBinaryContentDAO"/>
    <StorageDAO typeMapping="ComponentPresentation" class="com.tridion.storage.si4t.dao.JPASearchComponentPresentationDAO"/>
</StorageDAOBundle>

Updated based on Rai findings:

This feature should be working SI4T 1.2+ jar version (si4t-solr-1.2.jar)

To ensure SI4T 1.2 is there. That should make it work. If you need a higher version of datalayer then you should be able to get it from here: https://csei.sdl.com/hotfixes

19
  • Why we need to configure File Storage when we want only configure DB node? After above changes i am getting below error Deployment Processing Phase failed. Error creating bean with name 'storageFactoryConfigurationLoader': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'FSSearchDAOFactory' is defined Jan 4, 2019 at 7:08
  • Search Indexing data XML which item types have? Initial error complaining about to check if the default file system is properly defined and ItemTypes defaultStorageId is correct? I was wondering default Item type for page and binary defined in the beginning it causing the issue, I'm not sure, try to keep the item tags only in the publication tag
    – Velmurugan
    Jan 4, 2019 at 7:36
  • It is still throwing same error after removing default items types, I am guessing when configured 2 storage nodes with same class com.tridion.storage.si4t.JPASearchDAOFactory In configure function of JPASearchDAOFactory will return 1st node in below line "final String daoFactoryClassName = configuration.getAttribute(DAO_FACTORY_CLASS_ATTRIBUTE);" Jan 4, 2019 at 17:45
  • Please update your question with the latest error logs?
    – Velmurugan
    Jan 4, 2019 at 20:59
  • 1
    I tried to reproduce this locally, but with SI4T 1.2 and cd_datalayer-8.5.0-1064 it works fine. I see that two factories are instantiated and the correct DAOs are loaded for both separately. Do you maybe have a scaled out deployer?
    – Raimond
    Jan 17, 2019 at 8:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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