[ 
https://issues.apache.org/jira/browse/ODE-353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12619301#action_12619301
 ] 

Alexey Ousov commented on ODE-353:
----------------------------------

You should use Oracle connection pool to avoid deadlocks, I also experienced 
deadlocks while using other connection pools with ODE and OpenJPA. For Tomcat 
configuration looks like following:
                <Resource name="jdbc/ODEdatabaseConnection" auth="Container" 
scope="Shareable"
                        type="oracle.jdbc.pool.OracleDataSource"
                        factory="oracle.jdbc.pool.OracleDataSourceFactory"
                        maxActive="20" maxIdle="10" maxWait="-1"
                        url="jdbc:oracle:thin:@localhost:1521:XE" user="***" 
password="***"/>

I think you can make similar configuration for ServiceMix.

> Can't run ODE with Oracle and internal connection pool or external jencks 
> pool.
> -------------------------------------------------------------------------------
>
>                 Key: ODE-353
>                 URL: https://issues.apache.org/jira/browse/ODE-353
>             Project: ODE
>          Issue Type: Bug
>          Components: JBI Integration
>    Affects Versions: 1.2
>         Environment: Servicemix 3.2.1
>            Reporter: Rafal Rusin
>
> During startup I have a dead lock with a following stack trace:
> Thread [pool-4-thread-1] (Suspended)  
>       SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) 
> line: not available [native method]        
>       SocketInputStream.read(byte[], int, int) line: 129      
>       DataPacket(Packet).receive() line: not available        
>       DataPacket.receive() line: not available        
>       NetInputStream.getNextPacket() line: not available      
>       NetInputStream.read(byte[], int, int) line: not available       
>       NetInputStream.read(byte[]) line: not available 
>       NetInputStream.read() line: not available       
>       T4CMAREngine.unmarshalUB1() line: 1104  
>       T4CMAREngine.unmarshalSB1() line: 1075  
>       T4C8Oall.receive() line: 480    
>       T4CPreparedStatement.doOall8(boolean, boolean, boolean, boolean) line: 
> 219      
>       T4CPreparedStatement.executeForDescribe() line: 813     
>       T4CPreparedStatement(OracleStatement).executeMaybeDescribe() line: 1049 
>       T4CPreparedStatement.executeMaybeDescribe() line: 854   
>       T4CPreparedStatement(OracleStatement).doExecuteWithTimeout() line: 1154 
>       T4CPreparedStatement(OraclePreparedStatement).executeInternal() line: 
> 3370      
>       T4CPreparedStatement(OraclePreparedStatement).executeQuery() line: 3415 
>       PreparedStatementHandle.executeQuery() line: 49 
>       
> LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement(DelegatingPreparedStatement).executeQuery(boolean)
>  line: 264      
>       
> LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(boolean)
>  line: 850   
>       
> JDBCStoreManager$CancelPreparedStatement(DelegatingPreparedStatement).executeQuery(boolean)
>  line: 262   
>       JDBCStoreManager$CancelPreparedStatement.executeQuery(boolean) line: 
> 1407       
>       
> JDBCStoreManager$CancelPreparedStatement(DelegatingPreparedStatement).executeQuery()
>  line: 252  
>       TableJDBCSeq.executeQuery(JDBCConfiguration, Connection, 
> PreparedStatement, SQLBuffer) line: 728        
>       TableJDBCSeq.getSequence(ClassMapping, Connection) line: 470    
>       TableJDBCSeq.setSequence(ClassMapping, TableJDBCSeq$Status, int, 
> boolean, Connection) line: 510 
>       TableJDBCSeq.allocateSequence(JDBCStore, ClassMapping, 
> TableJDBCSeq$Status, int, boolean) line: 368     
>       TableJDBCSeq.nextInternal(JDBCStore, ClassMapping) line: 266    
>       TableJDBCSeq(AbstractJDBCSeq).next(StoreContext, ClassMetaData) line: 
> 60        
>       ImplHelper.generateValue(StoreContext, ClassMetaData, FieldMetaData, 
> int) line: 160     
>       ImplHelper.generateFieldValue(StoreContext, FieldMetaData) line: 144    
>       JDBCStoreManager.assignField(OpenJPAStateManager, int, boolean) line: 
> 592       
>       ApplicationIds.assign(OpenJPAStateManager, StoreManager, 
> FieldMetaData[], boolean) line: 464    
>       ApplicationIds.assign(OpenJPAStateManager, StoreManager, boolean) line: 
> 440     
>       JDBCStoreManager.assignObjectId(OpenJPAStateManager, boolean) line: 576 
>       
> ROPStoreManager(DelegatingStoreManager).assignObjectId(OpenJPAStateManager, 
> boolean) line: 134  
>       StateManagerImpl.assignObjectId(boolean, boolean) line: 517     
>       StateManagerImpl.preFlush(boolean, OpCallbacks) line: 2814      
>       PNewState.beforeFlush(StateManagerImpl, boolean, OpCallbacks) line: 39  
>       StateManagerImpl.beforeFlush(int, OpCallbacks) line: 957        
>       FinalizingBrokerImpl(BrokerImpl).flush(int) line: 1945  
>       FinalizingBrokerImpl(BrokerImpl).flushSafe(int) line: 1905      
>       FinalizingBrokerImpl(BrokerImpl).beforeCompletion() line: 1823  
>       TransactionImpl.beforeCompletion(List) line: 514        
>       TransactionImpl.beforeCompletion() line: 498    
>       TransactionImpl.beforePrepare() line: 400       
>       TransactionImpl.commit() line: 257      
>       GeronimoPlatformTransactionManager(TransactionManagerImpl).commit() 
> line: 238   
>       SimpleScheduler.execTransaction(Callable<T>) line: 181  
>       SimpleScheduler$1.call() line: 155      
>       FutureTask$Sync.innerRun() line: 269    
>       FutureTask<V>.run() line: 123   
>       ThreadPoolExecutor$Worker.runTask(Runnable) line: 650   
>       ThreadPoolExecutor$Worker.run() line: 675       
>       Thread.run() line: 595  
> On a following query:
> SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = :1 FOR UPDATE
> As I saw logs, I notices that OpenJPA starts twice (maybe that's the issue):
> 10:34:49,697 | INFO  | ProcessStoreImpl-1 | Runtime                  | 
> log.Log4JLogFactory$LogAdapter   80 | Starting OpenJPA 1.1.0
> 10:34:49,940 | INFO  | ProcessStoreImpl-1 | JDBC                     | 
> log.Log4JLogFactory$LogAdapter   80 | Using dictionary class 
> "org.apache.openjpa.jdbc.sql.OracleDictionary" (Oracle Oracle Database 10g 
> Express Edition Release 10.2.0.1.0 - Production ,Oracle JDBC driver 
> 10.2.0.4.0).
> 10:35:24,488 | INFO  | pool-4-thread-1 | Runtime                  | 
> log.Log4JLogFactory$LogAdapter   80 | Starting OpenJPA 1.1.0
> 10:35:24,490 | INFO  | pool-4-thread-1 | JDBC                     | 
> log.Log4JLogFactory$LogAdapter   80 | Using dictionary class 
> "org.apache.openjpa.jdbc.sql.OracleDictionary" (Oracle Oracle Database 10g 
> Express Edition Release 10.2.0.1.0 - Production ,Oracle JDBC driver 
> 10.2.0.4.0).
> Can you give me some suggestions about possible fix? 
> Regards

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to