[jboss-user] [JBoss Cache: Core Edition] - java.sql.SQLException: ORA-00001: unique constraint (CCC_12.
system.out
do-not-reply at jboss.com
Mon Nov 24 11:58:21 EST 2008
We are experiencing exception in database layer (in production), upon increasing the load on JBoss Cache. The system is working fine in normal load (one message every half a second coming from 5 different thread). Here is the exception:
The Isolation level is REPEATABLE_READ, however there is only thread looking at each node, i.e. each message with unique ID will be dealt with one thread only, and the ID is included in the FQN.
I also came across this related post, but that didn't help :(
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=96450
Any idea? Thanks in advance!
-mike
anonymous wrote : 2008-11-17 07:43:00,907 ERROR (Timer-4) [org.jboss.cache.loader.JDBCCacheLoader:119] Failed to insert node: ORA-00001: unique constraint (12.JBOSSCACHE_PK) violated
|
| java.sql.SQLException: ORA-00001: unique constraint (CCC_12.JBOSSCACHE_PK) violated
| at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
| at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:676)
| at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:602)
| at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:571)
| at oracle.jdbc.driver.T2CPreparedStatement.executeForRows(T2CPreparedStatement.java:764)
| at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
| at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
| at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
| at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:251)
| at org.jboss.cache.loader.JDBCCacheLoader.insertNode(JDBCCacheLoader.java:969)
| at org.jboss.cache.loader.JDBCCacheLoader.put(JDBCCacheLoader.java:913)
| at org.jboss.cache.loader.JDBCCacheLoader.put(JDBCCacheLoader.java:341)
| at org.jboss.cache.interceptors.PassivationInterceptor.invoke(PassivationInterceptor.java:63)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
| at org.jboss.cache.interceptors.CacheLoaderInterceptor.invoke(CacheLoaderInterceptor.java:197)
| at org.jboss.cache.interceptors.ActivationInterceptor.invoke(ActivationInterceptor.java:59)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
| at org.jboss.cache.interceptors.OptimisticReplicationInterceptor.invoke(OptimisticReplicationInterceptor.java:136)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
| at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:345)
| at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:156)
| at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
| at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:179)
| at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:5520)
| at org.jboss.cache.TreeCache.evict(TreeCache.java:3716)
| at org.jboss.cache.aop.PojoCache.evict(PojoCache.java:209)
| at org.jboss.cache.eviction.BaseEvictionPolicy.evict(BaseEvictionPolicy.java:34)
| at org.jboss.cache.eviction.BaseEvictionAlgorithm.evictCacheNode(BaseEvictionAlgorithm.java:210)
| at org.jboss.cache.eviction.LRUAlgorithm.evict(LRUAlgorithm.java:90)
| at org.jboss.cache.eviction.LRUAlgorithm.prune(LRUAlgorithm.java:121)
| at org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:98)
| at org.jboss.cache.eviction.EvictionTimerTask.run(EvictionTimerTask.java:80)
| at java.util.TimerThread.mainLoop(Timer.java:512)
| at java.util.TimerThread.run(Timer.java:462)
and here is the cache configuration:
<?xml version="1.0" encoding="UTF-8"?>
|
| <!-- ===================================================================== -->
| <!-- -->
| <!-- Customized TreeCache Service Configuration for Tomcat 5 Clustering -->
| <!-- -->
| <!-- ===================================================================== -->
|
| <server>
|
| <!-- ==================================================================== -->
| <!-- Defines TreeCache configuration -->
| <!-- ==================================================================== -->
|
| <!-- Note we are using TreeCacheAop -->
| <mbean code="org.jboss.cache.aop.TreeCacheAop" name="jboss.cache:service=TomcatClusteringCache">
| <depends>jboss.jca:service=DataSourceBinding,name=OracleDS</depends>
| <depends>jboss:service=Naming</depends>
| <depends>jboss:service=TransactionManager</depends>
| <!-- We need the AspectDeployer to deploy our FIELD granularity aspects -->
| <depends>jboss.aop:service=AspectDeployer</depends>
|
| <!-- Name of cluster. Needs to be the same for all nodes in the
| cluster, in order to find each other
| -->
| <attribute name="ClusterName">Tomcat-${jboss.partition.name:Cluster}</attribute>
|
| <!--
| Isolation level : SERIALIZABLE
| REPEATABLE_READ (default)
| READ_COMMITTED
| READ_UNCOMMITTED
| NONE
| -->
| <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
|
| <!-- add for bug number 10819 -->
| <attribute name="NodeLockingScheme">OPTIMISTIC</attribute>
| <attribute name="CacheMode">REPL_ASYNC</attribute>
| <attribute name="UseRegionBasedMarshalling">false</attribute>
|
| <!-- Whether or not the entire tree is inactive upon startup, only
| responding to replication messages after activateRegion() is
| called to activate one or more parts of the tree when a webapp is
| deployed. Must have the same value as "UseRegionBasedMarshalling".
| -->
| <attribute name="InactiveOnStartup">false</attribute>
|
| <!-- Make sure to specify BatchModeTransactionManager only! -->
| <attribute name="TransactionManagerLookupClass">org.jboss.cache.BatchModeTransactionManagerLookup</attribute>
| <attribute name="ClusterConfig">
| <config>
| <TCP bind_addr="localhost" start_port="7810" loopback="true" tcp_nodelay="false" down_thread="false" up_thread="false" />
| <TCPPING initial_hosts="localhost[7810],localhost[7830]" port_range="3" timeout="3500" num_initial_members="3" up_thread="false" down_thread="false" />
| <MERGE2 min_interval="5000" max_interval="10000" up_thread="false" down_thread="false" />
| <FD_SOCK down_thread="false" up_thread="false" />
| <FD shun="true" up_thread="false" down_thread="false" timeout="10000" max_tries="5" />
| <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false" />
| <pbcast.NAKACK down_thread="false" up_thread="false" gc_lag="100" retransmit_timeout="3000" />
| <pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false" />
| <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true" down_thread="false" up_thread="false" />
| <FC max_credits="2000000" down_thread="false" up_thread="false" min_threshold="0.10" />
| <FRAG2 frag_size="60000" down_thread="false" up_thread="false" />
| <pbcast.STATE_TRANSFER up_thread="false" down_thread="false" />
| </config>
| </attribute>
|
| <attribute name="SyncReplTimeout">20000</attribute>
|
| <!-- Max number of milliseconds to wait for a lock acquisition -->
| <attribute name="LockAcquisitionTimeout">15000</attribute>
|
| <attribute name="BuddyReplicationConfig">
| <config>
| <buddyReplicationEnabled>false</buddyReplicationEnabled>
| <buddyLocatorClass>org.jboss.cache.buddyreplication.NextMemberBuddyLocator</buddyLocatorClass>
| <buddyLocatorProperties>
| numBuddies = 1
| ignoreColocatedBuddies = true
| </buddyLocatorProperties>
|
| <buddyPoolName>default</buddyPoolName>
| <buddyCommunicationTimeout>2000</buddyCommunicationTimeout>
|
| <autoDataGravitation>false</autoDataGravitation>
| <dataGravitationRemoveOnFind>true</dataGravitationRemoveOnFind>
| <dataGravitationSearchBackupTrees>true</dataGravitationSearchBackupTrees>
|
| </config>
| </attribute>
| <attribute name="EvictionPolicyClass">org.jboss.cache.aop.eviction.AopLRUPolicy</attribute>
|
| <!-- Specific eviction policy configurations. This is LRU -->
| <attribute name="EvictionPolicyConfig">
| <config>
| <attribute name="wakeUpIntervalSeconds">5</attribute>
| <!-- Cache wide default -->
| <region name="/_default_">
| <attribute name="maxNodes">5000</attribute>
| <attribute name="timeToLiveSeconds">600</attribute>
| </region>
| </config>
| </attribute>
|
| <!-- New 1.3.x cache loader config block -->
| <attribute name="CacheLoaderConfiguration">
| <config>
| <passivation>false</passivation>
| <shared>true</shared>
| <cacheloader>
| <class>
| org.jboss.cache.loader.JDBCCacheLoader
| </class>
| <properties>
| cache.jdbc.datasource=java:/OracleDS
| cache.jdbc.table.drop=false
| </properties>
| <fetchPersistentState>true</fetchPersistentState>
| <ignoreModifications>false</ignoreModifications>
| <purgeOnStartup>false</purgeOnStartup>
| </cacheloader>
| </config>
| </attribute>
|
| </mbean>
| </server>
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4191819#4191819
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4191819
More information about the jboss-user
mailing list