I am trying to understand what is causing this deadlock.
The update command in the first process is the result of the trigger from the insert command. So I am trying to understand if the insert trigger fire on update?
<deadlock>
<victim-list>
<victimProcess id="process1fb169468" />
</victim-list>
<process-list>
<process id="process1fb169468" taskpriority="0" logused="2044" waitresource="KEY: 5:72057598307401728 (c73677424644)" waittime="61674" ownerId="34455794" transactionname="user_transaction" lasttranstarted="2022-07-11T23:24:01.387" XDES="0x56bee18e0" lockMode="U" schedulerid="6" kpid="9800" status="suspended" spid="94" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2022-07-11T23:24:01.387" lastbatchcompleted="2022-07-11T23:24:01.387" lastattention="2022-07-11T22:02:36.350" clientapp="Vizion WMS" hostname="AGROXAWORK02" hostpid="10484" loginname="vizion" isolationlevel="read committed (2)" xactid="34455794" currentdb="5" currentdbname="WMSData" lockTimeout="4294967295" clientoption1="671219744" clientoption2="128056">
<executionStack>
<frame procname="WMSData.dbo.UpdateDes" line="5" stmtstart="154" stmtend="298" sqlhandle="0x030005000caa6e4b5b56dd0089a6000000000000000000000000000000000000000000000000000000000000">
update inventory set designation = 'FROZEN' where designation <> 'FROZEN </frame>
<frame procname="WMSData.dbo.PostReceipt" line="101" stmtstart="7960" stmtend="10026" sqlhandle="0x0300050071b68341909a680037ae000001000000000000000000000000000000000000000000000000000000">
INSERT INTO [wmsdata].[dbo].[Inventory]
([Customer],[Product],[Row],[Rack],[Slot],[Pallets],[Cases],[Net],[ProductDate],[ReceiverNumber],[LotNumber],[ReceiveDate],[StorThru],[Status],[PalletNumber],[CustomerPallet],[StartTime],[StopTime],[BornOnDate],[EnteredBy],[ImportOrManual],[FullPalletQty],[PalletQtyReceived],[CustomerReference],lpnumber,fcgpallet,designation,mark,invoptional1,invoptional2,invoptional3,invoptional4,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,rsrate)
select [Customer],[Product],[Row],[Rack],[Slot],[Pallets],[Cases],[Net],[ProductDate],[Receiver],[LotNumber],convert(char(12),getdate(),101) as [ReceiveDate],[StorThru],[Status],[PalletNumber],[CustomerPallet],[StartTime],[StopTime],convert(char(12),getdate(),101) as [BornOnDate],[EnteredBy],[ImportOrManual],[FullPalletQty],cases as [PalletQtyReceived], #r, lpnumber, fcgpallet,designation,mark,invoptional1,invoptional2,invoptional3,invoptional4,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,rsrate
from [wmsdata].[dbo].receipts with (nolock) where palletnum </frame>
<frame procname="adhoc" line="1" sqlhandle="0x0100050098f50238607f6f0b0500000000000000000000000000000000000000000000000000000000000000">
exec dbo.postreceipt '149496','RDAY' </frame>
</executionStack>
<inputbuf>
exec dbo.postreceipt '149496','RDAY' </inputbuf>
</process>
<process id="process46811bc28" taskpriority="0" logused="22480" waitresource="KEY: 5:72057598307401728 (771c8a402149)" waittime="4364" ownerId="34439550" transactionname="user_transaction" lasttranstarted="2022-07-11T23:22:34.483" XDES="0x5a043d770" lockMode="U" schedulerid="1" kpid="10752" status="suspended" spid="59" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2022-07-11T23:22:34.497" lastbatchcompleted="2022-07-11T23:22:33.330" lastattention="2022-07-11T23:17:04.210" clientapp="Vizion WMS" hostname="AGROXAWORK02" hostpid="12144" loginname="vizion" isolationlevel="read committed (2)" xactid="34439550" currentdb="5" currentdbname="WMSData" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame procname="WMSData.dbo.PostShipment" line="161" stmtstart="16962" stmtend="17036" sqlhandle="0x0300050069a66001dd5e640021ac000001000000000000000000000000000000000000000000000000000000">
delete from inventory where cases <= </frame>
<frame procname="adhoc" line="1" sqlhandle="0x01000500f2278100b05d31790100000000000000000000000000000000000000000000000000000000000000">
exec Postshipment '257208', 'JJOHNSON' </frame>
</executionStack>
<inputbuf>
exec Postshipment '257208', 'JJOHNSON' </inputbuf>
</process>
</process-list>
<resource-list>
<keylock hobtid="72057598307401728" dbid="5" objectname="WMSData.dbo.Inventory" indexname="PK_Inventory" id="lock4e671e880" mode="X" associatedObjectId="72057598307401728">
<owner-list>
<owner id="process46811bc28" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process1fb169468" mode="U" requestType="wait" />
</waiter-list>
</keylock>
<keylock hobtid="72057598307401728" dbid="5" objectname="WMSData.dbo.Inventory" indexname="PK_Inventory" id="lock52ec3d280" mode="X" associatedObjectId="72057598307401728">
<owner-list>
<owner id="process1fb169468" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process46811bc28" mode="U" requestType="wait" />
</waiter-list>
</keylock>
</resource-list>
</deadlock>
I'm facing a deadlock problem, the sql server detects it and return an exception because it chose a process as a victim. I would like to avoid this problem, I tried to change the isolation level to read uncommitted and also add indexes but this did not resolve the problems, here is report that describe the deadlock problem:
<deadlock>
<victim-list>
<victimProcess id="process133b1e188" />
</victim-list>
<process-list>
<process id="process133b1e188" taskpriority="0" logused="5236" waitresource="RID: 18:1:3545:209" waittime="1939" ownerId="13564317" transactionname="implicit_transaction" lasttranstarted="2020-12-18T18:15:14.250" XDES="0x1a064a3a8" lockMode="U" schedulerid="2" kpid="23832" status="suspended" spid="71" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2020-12-18T18:15:14.280" lastbatchcompleted="2020-12-18T18:15:14.280" lastattention="1900-01-01T00:00:00.280" clientapp="jTDS" hostname="med" hostpid="123" loginname="med" isolationlevel="read uncommitted (1)" xactid="13564317" currentdb="18" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="462" stmtend="592" sqlhandle="0x030012003d326d4a3bf62b0195ac000001000000000000000000000000000000000000000000000000000000"> UPDATE DEP SET name WHERE id = 2 </frame>
</executionStack>
</process>
<process id="process133b1e558" taskpriority="0" logused="30956" waitresource="KEY: 18:72057766865403904 (8c1a6a11df48)" waittime="1957" ownerId="13563835" transactionname="implicit_transaction" lasttranstarted="2020-12-18T18:15:14.113" XDES="0x1a064b668" lockMode="S" schedulerid="2" kpid="32596" status="suspended" spid="68" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2020-12-18T18:15:14.263" lastbatchcompleted="2020-12-18T18:15:14.263" lastattention="1900-01-01T00:00:00.263" clientapp="jTDS" hostname="med" hostpid="123" loginname="med" isolationlevel="read committed (2)" xactid="13563835" currentdb="18" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="24" sqlhandle="0x0200000064dbc4257a329ecd9ef9f0056fe48ce548b17d2e0000000000000000000000000000000000000000">
SELECT * FROM Worker w WHERE (w.id = #P0 ) </frame>
</executionStack>
</process>
</process-list>
<resource-list>
<ridlock fileid="1" pageid="3545" dbid="18" objectname="DEP" id="lock185869680" mode="X" associatedObjectId="72057766864551936">
<owner-list>
<owner id="process133b1e558" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process133b1e188" mode="U" requestType="wait" />
</waiter-list>
</ridlock>
<keylock hobtid="72057766865403904" dbid="18" objectname="Worker" indexname="worker_id" id="lock17d9fdb80" mode="X" associatedObjectId="72057766865403904">
<owner-list>
<owner id="process133b1e188" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process133b1e558" mode="S" requestType="wait" />
</waiter-list>
</keylock>
</resource-list>
</deadlock>
Try reading about:
set deadlock priority high
You should use high or 10 for the session you don't want to be the victim.
And I would say isolation level read uncommitted is not a good choice.
Not able to deploy war onto wildFly 10.0,but it gets deployed perfectly in wildfly 8.2 with java 1.7 as compiler.
Upgraded java to 1.8, using default standalone.xml(no changes done/using h2 dstabase).
Using Spring version 5.1.9.RELEASE and hibernate-validator 5.4.3.Final.
Backend database- postgress
Below is the standalone.xml I am using.
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:4.0">
<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local" skip-group-loading="true"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
<security-realm name="ApplicationRealm">
<authentication>
<local default-user="$local" allowed-users="*" skip-group-loading="true"/>
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization>
<properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
</security-realms>
<audit-log>
<formatters>
<json-formatter name="json-formatter"/>
</formatters>
<handlers>
<file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
</handlers>
<logger log-boot="true" log-read-only="false" enabled="false">
<handlers>
<handler name="file"/>
</handlers>
</logger>
</audit-log>
<management-interfaces>
<http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
<access-control provider="simple">
<role-mapping>
<role name="SuperUser">
<include>
<user name="$local"/>
</include>
</role>
</role-mapping>
</access-control>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="CONSOLE">
<level name="DEBUG"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="DEBUG"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
</subsystem>
<subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
<default-job-repository name="in-memory"/>
<default-thread-pool name="batch"/>
<job-repository name="in-memory">
<in-memory/>
</job-repository>
<thread-pool name="batch">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>
<subsystem xmlns="urn:jboss:domain:bean-validation:1.0"/>
<subsystem xmlns="urn:jboss:domain:datasources:4.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:4.0">
<spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
<concurrent>
<context-services>
<context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
</context-services>
<managed-thread-factories>
<managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
</managed-thread-factories>
<managed-executor-services>
<managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" keepalive-time="5000"/>
</managed-executor-services>
<managed-scheduled-executor-services>
<managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" keepalive-time="3000"/>
</managed-scheduled-executor-services>
</concurrent>
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ejb3:4.0">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool" derive-size="from-worker-pools" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
<strict-max-pool name="mdb-strict-max-pool" derive-size="from-cpu-count" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
</bean-instance-pools>
</pools>
<caches>
<cache name="simple"/>
<cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>
</caches>
<passivation-stores>
<passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default" default-data-store="default-file-store">
<data-stores>
<file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>
</data-stores>
</timer-service>
<remote connector-ref="http-remoting-connector" thread-pool-name="default"/>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="100" unit="milliseconds"/>
</thread-pool>
</thread-pools>
<default-security-domain value="other"/>
<default-missing-method-permissions-deny-access value="true"/>
<log-system-exceptions value="true"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:io:1.1">
<worker name="default"/>
<buffer-pool name="default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="server" default-cache="default" module="org.wildfly.clustering.server">
<local-cache name="default">
<transaction mode="BATCH"/>
</local-cache>
</cache-container>
<cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
<local-cache name="passivation">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="true" purge="false"/>
</local-cache>
<local-cache name="persistent">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="false" purge="false"/>
</local-cache>
</cache-container>
<cache-container name="ejb" aliases="sfsb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan">
<local-cache name="passivation">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="true" purge="false"/>
</local-cache>
<local-cache name="persistent">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="false" purge="false"/>
</local-cache>
</cache-container>
<cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan">
<local-cache name="entity">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="local-query">
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="timestamps"/>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<subsystem xmlns="urn:jboss:domain:jca:4.0">
<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</long-running-threads>
</default-workmanager>
<cached-connection-manager/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.1">
<jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jsf:1.0"/>
<subsystem xmlns="urn:jboss:domain:mail:2.0">
<mail-session name="default" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:2.0">
<remote-naming/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
<subsystem xmlns="urn:jboss:domain:remoting:3.0">
<endpoint/>
<http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:resource-adapters:4.0"/>
<subsystem xmlns="urn:jboss:domain:request-controller:1.0"/>
<subsystem xmlns="urn:jboss:domain:sar:1.0"/>
<subsystem xmlns="urn:jboss:domain:security-manager:1.0">
<deployment-permissions>
<maximum-set>
<permission class="java.security.AllPermission"/>
</maximum-set>
</deployment-permissions>
</subsystem>
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jaspitest" cache-type="default">
<authentication-jaspi>
<login-module-stack name="dummy">
<login-module code="Dummy" flag="optional"/>
</login-module-stack>
<auth-module code="Dummy"/>
</authentication-jaspi>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:transactions:3.0">
<core-environment>
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:undertow:3.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:2.0">
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<endpoint-config name="Standard-Endpoint-Config"/>
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
</pre-handler-chain>
</endpoint-config>
<client-config name="Standard-Client-Config"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:3.0"/>
</profile>
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
</server>
Jboss-web.xml :-
<jboss-web>
<replication-config>
<cache-name>custom-session-cache</cache-name>
<replication-trigger>SET</replication-trigger>
<replication-granularity>ATTRIBUTE</replication-granularity>
<use-jk>false</use-jk>
<max-unreplicated-interval>30</max-unreplicated-interval>
<snapshot-mode>INSTANT</snapshot-mode>
<snapshot-interval>1000</snapshot-interval>
<session-notification-policy>com.example.CustomSessionNotificationPolicy</session-notification-policy>
</replication-config>
</jboss-web>
Getting the following exception :-
18:39:46,067 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "search.war")]) - failure description: {"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.clustering.web.locator.\"search.war\".nodes is missing [jboss.clustering.nodes.custom-session-cache.routing]",
"jboss.infinispan.custom-session-cache.\"search.war\" is missing [jboss.infinispan.custom-session-cache]",
"jboss.infinispan.custom-session-cache.\"search.war\".config is missing [jboss.infinispan.custom-session-cache.default.config, jboss.infinispan.custom-session-cache]",
"jboss.clustering.web.locator.\"search.war\".registry is missing [jboss.clustering.registry.custom-session-cache.routing]",
"jboss.clustering.web.\"search.war\" is missing [jboss.clustering.dispatcher.custom-session-cache, jboss.infinispan.custom-session-cache.affinity]"
]}
18:39:46,070 ERROR [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0021: Deploy of deployment "search.war" was rolled back with the following failure message:
{"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.clustering.web.locator.\"search.war\".nodes is missing [jboss.clustering.nodes.custom-session-cache.routing]",
"jboss.infinispan.custom-session-cache.\"search.war\" is missing [jboss.infinispan.custom-session-cache]",
"jboss.infinispan.custom-session-cache.\"search.war\".config is missing [jboss.infinispan.custom-session-cache.default.config, jboss.infinispan.custom-session-cache]",
"jboss.clustering.web.locator.\"search.war\".registry is missing [jboss.clustering.registry.custom-session-cache.routing]",
"jboss.clustering.web.\"search.war\" is missing [jboss.clustering.dispatcher.custom-session-cache, jboss.infinispan.custom-session-cache.affinity]"
]}
We have 2 environments, where we are calling one procedure from JSP page. I'm getting proper result in one environment after 7 mins as procedure execution time is 7 mins. But in another environment after 5 mins JBoss-database connectivity lost and results in error on JSP.
We are using JBoss EAP domain mode. Kindly provide solution.
Thanks.
Find below domain.xml content :
<?xml version='1.0' encoding='UTF-8'?> <domain xmlns="urn:jboss:domain:1.5"> <extensions> <extension module="org.jboss.as.clustering.infinispan"/> <extension module="org.jboss.as.clustering.jgroups"/> <extension module="org.jboss.as.cmp"/> <extension module="org.jboss.as.configadmin"/> <extension module="org.jboss.as.connector"/> <extension module="org.jboss.as.ee"/> <extension module="org.jboss.as.ejb3"/> <extension module="org.jboss.as.jacorb"/> <extension module="org.jboss.as.jaxr"/> <extension module="org.jboss.as.jaxrs"/> <extension module="org.jboss.as.jdr"/> <extension module="org.jboss.as.jmx"/> <extension module="org.jboss.as.jpa"/> <extension module="org.jboss.as.jsf"/> <extension module="org.jboss.as.jsr77"/> <extension module="org.jboss.as.logging"/> <extension module="org.jboss.as.mail"/> <extension module="org.jboss.as.messaging"/> <extension module="org.jboss.as.modcluster"/> <extension module="org.jboss.as.naming"/> <extension module="org.jboss.as.pojo"/> <extension module="org.jboss.as.remoting"/> <extension module="org.jboss.as.sar"/> <extension module="org.jboss.as.security"/> <extension module="org.jboss.as.threads"/> <extension module="org.jboss.as.transactions"/> <extension module="org.jboss.as.web"/> <extension module="org.jboss.as.webservices"/> <extension module="org.jboss.as.weld"/> </extensions> <system-properties> <property name="java.net.preferIPv4Stack" value="true"/> <property name="jboss.modules.system.pkgs" value="com.singularity"/> </system-properties> <paths> <path name="LOG_PATH" path="E:\Apps\RedHat\Logs\Host01\${jboss.server.name}"/> </paths> <management> <access-control provider="simple"> <role-mapping> <role name="SuperUser"> <include> <user name="$local"/> </include> </role> </role-mapping> </access-control> </management> <profiles> <profile name="full-ha"> <subsystem xmlns="urn:jboss:domain:logging:1.3"> <console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler> <file-handler name="TransActionLog" autoflush="true"> <level name="DEBUG"/> <file relative-to="LOG_PATH" path="transactions.log"/> <append value="true"/> </file-handler> <size-rotating-file-handler name="FILE" autoflush="true"> <level name="CONFIG"/> <formatter> <pattern-formatter pattern="%d{MM/dd/yyyy HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> <file relative-to="LOG_PATH" path="server.log"/> <rotate-size value="50m"/> <max-backup-index value="30"/> <append value="true"/> </size-rotating-file-handler> <logger category="org.jboss.jca.core.connectionmanager"> <level name="TRACE"/> </logger> <logger category="com.arjuna" use-parent-handlers="false"> <level name="DEBUG"/> <handlers> <handler name="TransActionLog"/> </handlers> </logger> <logger category="org.apache.tomcat.util.modeler"> <level name="WARN"/> </logger> <logger category="org.jboss.as.config"> <level name="TRACE"/> </logger> <logger category="sun.rmi"> <level name="WARN"/> </logger> <logger category="jacorb"> <level name="WARN"/> </logger> <logger category="jacorb.config"> <level name="ERROR"/> </logger> <root-logger> <level name="INFO"/> <handlers> <handler name="CONSOLE"/> <handler name="FILE"/> </handlers> </root-logger> </subsystem> <subsystem xmlns="urn:jboss:domain:cmp:1.1"/> <subsystem xmlns="urn:jboss:domain:configadmin:1.0"/> <subsystem xmlns="urn:jboss:domain:datasources:1.1"> <datasources> <datasource jta="false" jndi-name="java:/omnicab" pool-name="omnicab" enabled="true" use-ccm="false"> <connection-url>jdbc:sqlserver://162.123.118.185:1433;databaseName=omnicab</connection-url> <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> <driver>sqljdbc4.jar</driver> <pool> <min-pool-size>30</min-pool-size> <max-pool-size>500</max-pool-size> <prefill>true</prefill> <use-strict-min>false</use-strict-min> <flush-strategy>FailingConnectionOnly</flush-strategy> </pool> <security> <user-name>OmniUserMO</user-name> <password>WrUthus4</password> </security> <validation> <validate-on-match>true</validate-on-match> <background-validation>false</background-validation> </validation> <timeout> <blocking-timeout-millis>30000</blocking-timeout-millis> <idle-timeout-minutes>2</idle-timeout-minutes> </timeout> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> </drivers> </datasources> </subsystem> <subsystem xmlns="urn:jboss:domain:ee:1.1"> <global-modules> <module name="omnidocs_library" slot="main"/> <module name="org.jboss.remote-naming" slot="main"/> </global-modules> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> </subsystem> <subsystem xmlns="urn:jboss:domain:ejb3:1.4"> <session-bean> <stateless> <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> </stateless> <stateful default-access-timeout="5000" cache-ref="simple" clustered-cache-ref="clustered"/> <singleton default-access-timeout="5000"/> </session-bean> <mdb> <resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:hornetq-ra}"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb> <pools> <bean-instance-pools> <strict-max-pool name="slsb-strict-max-pool" max-pool-size="100" instance-acquisition-timeout="10" instance-acquisition-timeout-unit="MINUTES"/> <strict-max-pool name="mdb-strict-max-pool" max-pool-size="100" instance-acquisition-timeout="10" instance-acquisition-timeout-unit="MINUTES"/> </bean-instance-pools> </pools> <caches> <cache name="simple" aliases="NoPassivationCache"/> <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/> <cache name="clustered" passivation-store-ref="infinispan" aliases="StatefulTreeCache"/> </caches> <passivation-stores> <file-passivation-store name="file"/> <cluster-passivation-store name="infinispan" cache-container="ejb"/> </passivation-stores> <async thread-pool-name="default"/> <timer-service thread-pool-name="default"> <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/> </timer-service> <remote connector-ref="remoting-connector" thread-pool-name="default"/> <thread-pools> <thread-pool name="default"> <max-threads count="10"/> <keepalive-time time="100" unit="milliseconds"/> </thread-pool> </thread-pools> <iiop enable-by-default="false" use-qualified-name="false"/> <default-security-domain value="other"/> <default-missing-method-permissions-deny-access value="true"/> </subsystem> <subsystem xmlns="urn:jboss:domain:infinispan:1.4"> <cache-container name="singleton" aliases="cluster ha-partition" default-cache="default"> <transport lock-timeout="60000"/> <replicated-cache name="default" mode="SYNC" batching="true"> <locking isolation="REPEATABLE_READ"/> </replicated-cache> </cache-container> <cache-container name="web" aliases="standard-session-cache" default-cache="repl" module="org.jboss.as.clustering.web.infinispan"> <transport lock-timeout="60000"/> <replicated-cache name="repl" mode="ASYNC" batching="true"> <file-store/> </replicated-cache> <replicated-cache name="sso" mode="SYNC" batching="true"/> <distributed-cache name="dist" l1-lifespan="0" mode="ASYNC" batching="true"> <file-store/> </distributed-cache> </cache-container> <cache-container name="ejb" aliases="sfsb sfsb-cache" default-cache="repl" module="org.jboss.as.clustering.ejb3.infinispan"> <transport lock-timeout="60000"/> <replicated-cache name="repl" mode="ASYNC" batching="true"> <eviction strategy="LRU" max-entries="10000"/> <file-store/> </replicated-cache> <replicated-cache name="remote-connector-client-mappings" mode="SYNC" batching="true"/> <distributed-cache name="dist" l1-lifespan="0" mode="ASYNC" batching="true"> <eviction strategy="LRU" max-entries="10000"/> <file-store/> </distributed-cache> </cache-container> <cache-container name="hibernate" default-cache="local-query" module="org.jboss.as.jpa.hibernate:4"> <transport lock-timeout="60000"/> <local-cache name="local-query"> <transaction mode="NONE"/> <eviction strategy="LRU" max-entries="10000"/> <expiration max-idle="100000"/> </local-cache> <invalidation-cache name="entity" mode="SYNC"> <transaction mode="NON_XA"/> <eviction strategy="LRU" max-entries="10000"/> <expiration max-idle="100000"/> </invalidation-cache> <replicated-cache name="timestamps" mode="ASYNC"> <transaction mode="NONE"/> <eviction strategy="NONE"/> </replicated-cache> </cache-container> </subsystem> <subsystem xmlns="urn:jboss:domain:jacorb:1.3"> <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> <initializers security="identity" transactions="spec"/> </orb> </subsystem> <subsystem xmlns="urn:jboss:domain:jaxr:1.1"> <connection-factory jndi-name="java:jboss/jaxr/ConnectionFactory"/> </subsystem> <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> <subsystem xmlns="urn:jboss:domain:jca:1.1"> <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> <bean-validation enabled="true"/> <default-workmanager> <short-running-threads> <core-threads count="50"/> <queue-length count="50"/> <max-threads count="50"/> <keepalive-time time="10" unit="seconds"/> </short-running-threads> <long-running-threads> <core-threads count="50"/> <queue-length count="50"/> <max-threads count="50"/> <keepalive-time time="10" unit="seconds"/> </long-running-threads> </default-workmanager> <cached-connection-manager/> </subsystem> <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> <subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-stack="udp"> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/> <protocol type="FD"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="pbcast.NAKACK"/> <protocol type="UNICAST2"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG2"/> <protocol type="RSVP"/> </stack> <stack name="tcp"> <transport type="TCP" socket-binding="jgroups-tcp"/> <protocol type="TCPPING" socket-binding="jgroups-tcp"> <property name="initial_hosts"> ${jboss.cluster.tcp.initial_hosts} </property> <property name="timeout"> 2000 </property> </protocol> <protocol type="MERGE2"/> <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/> <protocol type="FD"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="pbcast.NAKACK"/> <protocol type="UNICAST2"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG2"/> <protocol type="RSVP"/> </stack> </subsystem> <subsystem xmlns="urn:jboss:domain:jmx:1.3"> <expose-resolved-model/> <expose-expression-model/> <remoting-connector use-management-endpoint="false"/> </subsystem> <subsystem xmlns="urn:jboss:domain:jpa:1.1"> <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/> </subsystem> <subsystem xmlns="urn:jboss:domain:jsf:1.0"/> <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/> <subsystem xmlns="urn:jboss:domain:mail:1.1"> <mail-session jndi-name="java:jboss/mail/Default"> <smtp-server outbound-socket-binding-ref="mail-smtp"/> </mail-session> </subsystem> <subsystem xmlns="urn:jboss:domain:messaging:1.4"> <hornetq-server> <persistence-enabled>true</persistence-enabled> <security-enabled>false</security-enabled> <journal-type>NIO</journal-type> <journal-min-files>2</journal-min-files> <connectors> <netty-connector name="netty" socket-binding="messaging"/> <netty-connector name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> </netty-connector> <in-vm-connector name="in-vm" server-id="0"/> </connectors> <acceptors> <netty-acceptor name="netty" socket-binding="messaging"/> <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> <param key="direct-deliver" value="false"/> </netty-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> </acceptors> <broadcast-groups> <broadcast-group name="bg-group1"> <jgroups-stack>tcp</jgroups-stack> <broadcast-period>5000</broadcast-period> <connector-ref> netty </connector-ref> </broadcast-group> </broadcast-groups> <discovery-groups> <discovery-group name="dg-group1"> <jgroups-stack>tcp</jgroups-stack> <refresh-timeout>10000</refresh-timeout> </discovery-group> </discovery-groups> <cluster-connections> <cluster-connection name="my-cluster"> <address>jms</address> <connector-ref>netty</connector-ref> <discovery-group-ref discovery-group-name="dg-group1"/> </cluster-connection> </cluster-connections> <security-settings> <security-setting match="#"> <permission type="send" roles="guest"/> <permission type="consume" roles="guest"/> <permission type="createNonDurableQueue" roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/> </security-setting> </security-settings> <address-settings> <address-setting match="#"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <max-size-bytes>10485760</max-size-bytes> <page-size-bytes>2097152</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</message-counter-history-day-limit> <redistribution-delay>1000</redistribution-delay> </address-setting> </address-settings> <jms-connection-factories> <connection-factory name="InVmConnectionFactory"> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/ConnectionFactory"/> </entries> </connection-factory> <connection-factory name="RemoteConnectionFactory"> <connectors> <connector-ref connector-name="netty"/> </connectors> <entries> <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> </entries> <ha>true</ha> <block-on-acknowledge>true</block-on-acknowledge> <retry-interval>1000</retry-interval> <retry-interval-multiplier>1.0</retry-interval-multiplier> <reconnect-attempts>-1</reconnect-attempts> </connection-factory> <pooled-connection-factory name="hornetq-ra"> <transaction mode="xa"/> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/JmsXA"/> </entries> </pooled-connection-factory> </jms-connection-factories> </hornetq-server> </subsystem> <subsystem xmlns="urn:jboss:domain:modcluster:1.1"> <mod-cluster-config advertise-socket="modcluster" connector="ajp"> <dynamic-load-provider> <load-metric type="busyness"/> </dynamic-load-provider> </mod-cluster-config> </subsystem> <subsystem xmlns="urn:jboss:domain:naming:1.4"> <remote-naming/> </subsystem> <subsystem xmlns="urn:jboss:domain:pojo:1.0"/> <subsystem xmlns="urn:jboss:domain:remoting:1.1"> <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/> </subsystem> <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"/> <subsystem xmlns="urn:jboss:domain:sar:1.0"/> <subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> <login-module code="Remoting" flag="optional"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> <login-module code="RealmDirect" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain> <security-domain name="jboss-web-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> <security-domain name="jboss-ejb-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> </security-domains> </subsystem> <subsystem xmlns="urn:jboss:domain:threads:1.1"/> <subsystem xmlns="urn:jboss:domain:transactions:1.4"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <coordinator-environment enable-statistics="true" default-timeout="300"/> </subsystem> <subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" native="false"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/> <virtual-server name="default-host" enable-welcome-root="true"> <alias name="localhost"/> <alias name="example.com"/> </virtual-server> </subsystem> <subsystem xmlns="urn:jboss:domain:webservices:1.2"> <modify-wsdl-address>true</modify-wsdl-address> <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> <endpoint-config name="Standard-Endpoint-Config"/> <endpoint-config name="Recording-Endpoint-Config"> <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> </pre-handler-chain> </endpoint-config> <client-config name="Standard-Client-Config"/> </subsystem> <subsystem xmlns="urn:jboss:domain:weld:1.0"/> </profile> </profiles> <interfaces> <interface name="management"/> <interface name="public"/> <interface name="unsecure"/> </interfaces> <socket-binding-groups> <socket-binding-group name="full-ha-sockets" default-interface="public"> <socket-binding name="ajp" port="8009"/> <socket-binding name="http" port="8080"/> <socket-binding name="https" port="8443"/> <socket-binding name="jacorb" interface="unsecure" port="3528"/> <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/> <socket-binding name="jgroups-mping" port="2" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45702"/> <socket-binding name="jgroups-tcp" port="7600"/> <socket-binding name="jgroups-tcp-fd" port="57600"/> <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/> <socket-binding name="jgroups-udp-fd" port="54200"/> <socket-binding name="messaging" port="5445"/> <socket-binding name="messaging-group" port="2" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:29876}"/> <socket-binding name="messaging-throughput" port="5455"/> <socket-binding name="modcluster" port="2" multicast-address="224.0.1.105" multicast-port="23366"/> <socket-binding name="remoting" port="4447"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> </socket-binding-group> </socket-binding-groups> <deployments> <deployment name="sqljdbc4.jar" runtime-name="sqljdbc4.jar"> <content sha1="ff439c53190a987d327165dec8b148f670cb7ca8"/> </deployment> <deployment name="wfs_ejb.jar" runtime-name="wfs_ejb.jar"> <content sha1="139596c21fbed3524bf304ccfe2a128706d406b4"/> </deployment> <deployment name="wfcustom_ejb.jar" runtime-name="wfcustom_ejb.jar"> <content sha1="00283b69bb89bcc15618e4c5cd28d88504513618"/> </deployment> <deployment name="wfs_timer_ejb.jar" runtime-name="wfs_timer_ejb.jar"> <content sha1="91b3a12fdd4bee9c3cd56e2a7da64e5b0823d7e3"/> </deployment> <deployment name="omnidocs_ejb.jar" runtime-name="omnidocs_ejb.jar"> <content sha1="d1bdbee452de8e84dac6dcdca60aaabb7aa4295a"/> </deployment> <deployment name="webdesktop.war" runtime-name="webdesktop.war"> <content sha1="71dbddf580c087e27232bbe88c7ddff72ce17815"/> </deployment> <deployment name="omnidocs.war" runtime-name="omnidocs.war"> <content sha1="0a59f26d6504fa196cb897d3ea0863ca8e051b44"/> </deployment> <deployment name="ofservices.war" runtime-name="ofservices.war"> <content sha1="1d95260b898c6d673f1776a45d52ff8e3c3ceedf"/> </deployment> <deployment name="customwebapp.war" runtime-name="customwebapp.war"> <content sha1="5089588eae2a6e373d86b307f030401238956d28"/> </deployment> <deployment name="processmanager.war" runtime-name="processmanager.war"> <content sha1="c50a55d7feba6a7ed68ef9bfe5e462a78cf437f9"/> </deployment> <deployment name="omniflowapproval.war" runtime-name="omniflowapproval.war"> <content sha1="ba676ebf2e38f1ca51a59bcc56e1ef83fc8d2572"/> </deployment> <deployment name="processmanager.war_ol" runtime-name="processmanager.war_ol"> <content sha1="301769eac66d03b7eb24271cc7b370b041405c14"/> </deployment> <deployment name="1stview.cab" runtime-name="1stview.cab"> <content sha1="6a47e2a8a73ba77507175721deb0aed08ea711db"/> </deployment> <deployment name="AnnotationToolbar.properties" runtime-name="AnnotationToolbar.properties"> <content sha1="382d32000b2869ee71895b746f4368fc673c559d"/> </deployment> <deployment name="DeleteHotFolder.jsp" runtime-name="DeleteHotFolder.jsp"> <content sha1="1493b777fbc51efe185a5b53ebde1efe5f7e437f"/> </deployment> <deployment name="ExtendSession.jsp" runtime-name="ExtendSession.jsp"> <content sha1="36aae2edb05f96bad955559a4ee1a6b2e47f0dc9"/> </deployment> <deployment name="ForceChangePassword.jsp" runtime-name="ForceChangePassword.jsp"> <content sha1="31c4934ecd9f0001b7abf635feb050c83c6a61f0"/> </deployment> </deployments> <server-groups> <server-group name="OmniFlow_Cluster" profile="full-ha"> <jvm name="omnisrvr_conf"> <heap size="2048m" max-size="2048m"/> <permgen max-size="256m"/> <jvm-options> <option value="-javaagent:E:/Appdynamics/AppServerAgent-SUN/ver4.0.3.0/javaagent.jar"/> <option value="-Dappdynamics.agent.applicationName=OmniFlow"/> <option value="-Dappdynamics.agent.tierName=EBS_Omniflow"/> </jvm-options> </jvm> <socket-binding-group ref="full-ha-sockets"/> <deployments> <deployment name="ofservices.war" runtime-name="ofservices.war"/> <deployment name="omnidocs.war" runtime-name="omnidocs.war"/> <deployment name="omnidocs_ejb.jar" runtime-name="omnidocs_ejb.jar"/> <deployment name="sqljdbc4.jar" runtime-name="sqljdbc4.jar"/> <deployment name="webdesktop.war" runtime-name="webdesktop.war"/> <deployment name="wfcustom_ejb.jar" runtime-name="wfcustom_ejb.jar"/> <deployment name="wfs_ejb.jar" runtime-name="wfs_ejb.jar"/> <deployment name="wfs_timer_ejb.jar" runtime-name="wfs_timer_ejb.jar"/> <deployment name="customwebapp.war" runtime-name="customwebapp.war"/> </deployments> <system-properties> <property name="jboss.cluster.tcp.initial_hosts" value="162.123.228.158[7600],162.123.228.157[7600]" boot-time="true"/> </system-properties> </server-group> <server-group name="Reports_Cluster" profile="full-ha"> <jvm name="omnisrvr_conf"> <heap size="2048m" max-size="2048m"/> <permgen max-size="256m"/> <jvm-options> <option value="-javaagent:E:/Appdynamics/AppServerAgent-SUN/ver4.0.3.0/javaagent.jar"/> <option value="-Dappdynamics.agent.applicationName=OmniFlow"/> <option value="-Dappdynamics.agent.tierName=EBS_Omniflow"/> </jvm-options> </jvm> <socket-binding-group ref="full-ha-sockets"/> <deployments> <deployment name="omnidocs_ejb.jar" runtime-name="omnidocs_ejb.jar"/> <deployment name="sqljdbc4.jar" runtime-name="sqljdbc4.jar"/> <deployment name="wfcustom_ejb.jar" runtime-name="wfcustom_ejb.jar"/> <deployment name="wfs_ejb.jar" runtime-name="wfs_ejb.jar"/> <deployment name="wfs_timer_ejb.jar" runtime-name="wfs_timer_ejb.jar"/> <deployment name="processmanager.war" runtime-name="processmanager.war"/> </deployments> <system-properties> <property name="jboss.cluster.tcp.initial_hosts" value="162.123.228.158[7700],162.123.228.157[7700]" boot-time="true"/> </system-properties> </server-group> </server-groups> </domain>
I'm working with some stored procedure and deadlock situation.
I've been using SQL Server Profiler and get some information about the deadlock from 'Deadlock graph' event in form of the .xdl file.
Below content of that file.
I've just cleared some informations about the statement.The statement marked as <executionStack> in the .xdl was something like this (for both processes the same statement):
SELECT SomeColumn, SomeColumn2
FROM SomeTable WITH (UPDLOCK)
INNER JOIN SomeTable2 ON SomeTable.SomeTable2ID = SomeTable2.SomeTable2ID
INNER JOIN SomeTable3 ON SomeTable2.SomeTable3ID = SomeTable3.SomeTable3ID
WHERE SomeColumn = #Something AND SomeColumn2 = #Something2
And the content of the .xdl file:
<deadlock-list>
<deadlock victim="processc19dc8">
<process-list>
<process id="processc19dc8" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (8194443284a0)" waittime="1541" ownerId="21923027" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80051950" lockMode="RangeS-U" schedulerid="2" kpid="2712" status="suspended" spid="54" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923027" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
...
</process>
<process id="processc4d048" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (a0c936a3c965)" waittime="1541" ownerId="21923023" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80049800" lockMode="RangeS-U" schedulerid="4" kpid="2492" status="suspended" spid="53" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923023" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
...
</process>
</process-list>
<resource-list>
<keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock83d99200" mode="RangeS-U" associatedObjectId="72057594042646528">
<owner-list>
<owner id="processc4d048" mode="RangeS-U"/>
</owner-list>
<waiter-list>
<waiter id="processc19dc8" mode="RangeS-U" requestType="wait"/>
</waiter-list>
</keylock>
<keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock89b52900" mode="U" associatedObjectId="72057594042646528">
<owner-list>
<owner id="processc19dc8" mode="U"/>
</owner-list>
<waiter-list>
<waiter id="processc4d048" mode="RangeS-U" requestType="wait"/>
</waiter-list>
</keylock>
</resource-list>
</deadlock>
</deadlock-list>
So it looks like the first process owns a resource with mode=U, and the second owns the same resource with mode=RangeS-U.
How it is possible if these two modes are not compatible with each other (according to the compatibility matrix)?