Issue 483: Non task object in queue
Status:  Released
Owner: ----
Closed:  Mar 2012
Reported by nas...@chromium.org, Mar 3, 2010
Affected Version: gerrit rev: de0c3f4a2759f2bf8c73a8d04fc30497921e4bd7

What steps will reproduce the problem?
1. On host with START_STOP_DAEMON=0 start gerrit using './gerrit.sh start'
2. Wait 24 hours?

What is the expected output? What do you see instead?

I would expect this to be in error_log, but instead I see this in my terminal window:
Exception in thread "WorkQueue-1" java.lang.ClassCastException: java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask cannot be cast to 
com.google.gerrit.server.git.WorkQueue$Task
	at com.google.gerrit.server.git.WorkQueue$Executor.afterExecute(WorkQueue.java:172)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Not really a big deal since I wouldn't do anything about this exception anyway, but it should be getting logged to the proper place.
Mar 4, 2010
#1 sop@google.com
 Issue 437  has been merged into this issue.
Mar 4, 2010
#2 sop@google.com
This must be the LogFileCompressor.  Its the only task that
runs every 24 hours.  When it gets rescheduled we must not
be getting it decorated, resulting in a cast exception.

The worker threads don't have a generic error handler setup,
so crashes within those threads aren't going into our logs.
Status: Accepted
Mar 4, 2010
#3 sop@google.com
The console output problem is fixed by change
Ida8d0c91744410b316ba32834a2307b10bc312f8.

But I can't figure out why we'd be seeing the
ClassCastException after about 24 hours.  Its
not the LogFileCompressor, because I changed
that to use 24 seconds and it repeats just fine.

Change I5289ebf88570ebb997b443eb188167d77b61f0df
adds logging to help us better debug the problem.
Status: AwaitingInformation
Mar 5, 2010
#4 nas...@chromium.org
Just restarted the server, we'll see if I have anything after the weekend.
Mar 6, 2010
#5 nas...@chromium.org
24 hours later...

[2010-03-06 16:07:54,594] ERROR com.google.gerrit.server.git.WorkQueue : Non task 
object in queue: class 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask: 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@64a63599
Mar 8, 2010
#6 sop@google.com
Arrrgh.  My servers are also showing the same error now
in their error logs.  But I can't seem to make my desktop
reproduce it when the period is 24 seconds rather than
24 hours.  :-\


Status: Accepted
Mar 8, 2010
#7 sop@google.com
(No comment was entered for this change.)
Summary: Non task object in queue
Mar 8, 2010
#8 sop@google.com
I think change I3a4584949b591601cf923f3a90715f5d5fb69bbb
might be the ticket here.  There seems to be some variable
in JDK implementations, certain versions have an afterExecute
that works as I expected, and others don't.  Its best to just
remove the dependency on that API.
Mar 8, 2010
#9 sop@google.com
Should be fixed by I3a4584949b591601cf923f3a90715f5d5fb69bbb
Status: Fixed
Labels: FixedIn-2.1.2
Mar 27, 2012
#10 sop@google.com
(No comment was entered for this change.)
Status: Released