roller-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anil Gangolli (JIRA)" <j...@apache.org>
Subject [jira] Commented: (ROL-1761) tasks will not run more often than leaseTime minutes
Date Fri, 28 Nov 2008 23:20:19 GMT

    [ https://issues.apache.org/roller/browse/ROL-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14459#action_14459
] 

Anil Gangolli commented on ROL-1761:
------------------------------------


I examined this issue only on current trunk (4.1-dev).

I found that the unit test TaskLockTest.testTaskLockCRUD() is doing its own flushing so it
doesn't reveal this problem.  Also, I noticed that with current semantics/implementation of
JPAThreadManagerImpl, the unregisterLease() should be idemptotent, making the test somewhat
flawed.

After removing the test-level flushes, correcting the duplicate release test assertion and
adding flushes at the JPAThreadManagerImpl level, the test is passing as I expect.

I will be attaching a patch file for current trunk.  Seeking review before checkin.


> tasks will not run more often than leaseTime minutes
> ----------------------------------------------------
>
>                 Key: ROL-1761
>                 URL: https://issues.apache.org/roller/browse/ROL-1761
>             Project: Roller
>          Issue Type: Bug
>          Components: Database Access & Data Model
>    Affects Versions: 4.0
>         Environment: solaris 10, oracle 10g, glassfishv2
>            Reporter: Dick Davies
>            Assignee: Anil Gangolli
>
> We're finding that our tasks won't run more often than every leaseTime minutes. 
> After a bit more digging, we found our JPAThreadManagerImpl.unregisterLease() method
is not updating the database,
> so any lease that is successfully taken out are kept , blocking that task from running,
until they expire.
> In this case , the JPA-generated SQL looks ok, but the roller logs show what looks like
a transaction rolling back:
> DEBUG 2008-11-21 11:47:00,097 CommonsLogFactory$LogAdapter:trace - Executing query: [UPDATE
TaskLock t SET t.timeLeased=?1 WHERE t.
> name=?2 AND t.clientId=?3] with parameters: {3=ScheduledEntriesTask, 2=0, 1=devel-roller01}
> DEBUG 2008-11-21 11:47:00,097 CommonsLogFactory$LogAdapter:trace - <t 6810846, conn
4959010> executing prepstmnt 20488940 UPDATE ro
> ller_tasklock t0 SET timeleased = ? WHERE (t0.name = ? AND t0.client = ?) [params=(int)
0, (String) ScheduledEntriesTask, (String)
> devel-roller01]
> DEBUG 2008-11-21 11:47:00,098 CommonsLogFactory$LogAdapter:trace - <t 6810846, conn
4959010> [0 ms] spent
> DEBUG 2008-11-21 11:47:00,098 RollerTaskWithLeasing:run - ScheduledEntriesTask: Lease
released, task finished
> DEBUG 2008-11-21 11:47:00,109 CommonsLogFactory$LogAdapter:trace - <t 6810846, conn
4959010> [10 ms] rollback  *******
> DEBUG 2008-11-21 11:47:00,109 CommonsLogFactory$LogAdapter:trace - <t 6810846, conn
4959010> [0 ms] close
> Is the line flagged '******' a transaction rolling back? 
> If so, does anyone have any clue where I start looking to find out why JPA did that?
> I suppose I could work around this by setting interval == leaseTime, but this is a multi-server
cluster
> and I've got enough headaches without adding race conditions into the mix :)

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


Mime
View raw message