If this is using JPA, matbe you are not seeing any locking because the entity 
manager is flushing is requests to the database engine only when the entity 
bean methods is returned from and the transaction manager kicks in to persist 
the changes.   

Try adding a "em.flush()"  call on the entity manger which will force the 
database changes to occur and then maybe you might see the lock table populated.

Just a thought.

Brett


________________________________________
From: Mark Stephen Krueger [[email protected]]
Sent: Sunday, February 03, 2013 11:21 AM
To: [email protected]
Subject: SYSCS_DIAG.LOCK_TABLE keeps coming up enpty

I'm trying to debug an issue with a deadlock with an EJB app running under
Glassfish 3.1.2.1.  The app uses entity beans and the entity manager.  I
want to view the lock table at various points so I wrote the following code.
The problem is everywhere I place a call to it, the lock table is always
coming back as empty (no rows). What am I missing?

    @Resource(mappedName="jdbc/myderbyjndi")
    private DataSource dataSource;

    ..

    private void dumpLockTable()
    {
        try ( Connection connection = dataSource.getConnection() )
        {
            PreparedStatement ps = connection.prepareStatement( "SELECT *
FROM SYSCS_DIAG.LOCK_TABLE" );
            ResultSet rs = ps.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            int columns = rsmd.getColumnCount();
            StringBuilder sb = new StringBuilder();
            sb.append( "Lock Table\n" );
            while( rs.next() )
            {
                for ( int col = 1; col <= columns; col++ )
                {
                    sb.append( rs.getString( col ) );
                    sb.append( "\t|" );
                }
                sb.append( "\n" );
            }
            logger.info( sb.toString() );
        }

        catch ( SQLException sqle )
        {
            logger.throwing( LOG_CLASS_NAME, "dumpLockTable", sqle );
        }
    }


I believe this is Derby 10.8.




Reply via email to