MySQL has some "Server System Variables".
One of these is wait_timeout, which has the value 28800 seconds as default.
Look at http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout for more information about wait_timeout.

wait_timeout is the number of seconds the server waits for activity on a non interactive connection before closing it.
Unfortunately, the server doesn't tell the client whether the connection is closed so that the client will use a closed connection which throws an error

 Lock wait timeout exceeded; try restarting transaction

or

 The last packet successfully received from the server was xxx,xxx,xxx milliseconds ago.  
 The last packet sent successfully to the server was xxx,xxx,xxx milliseconds ago. is longer than the server configured value of 'wait_timeout'.

You can increase the value of wait_timeout in the mysql configuration file (my.cnf). to avoid the problem but then you can get problems with the max. number of connections.

A workaround in the JobScheduler is to configure a job with a repeat interval in its schedule which is shorter than the wait_timeout value.
For example you can use the scheduler_dequeue_mail job in ./config/live/sos/housekeeping/scheduler_dequeue_mail.job.xml.

 <?xml version="1.0" encoding="iso-8859-1"?>
 
 <job title = "Send buffered mails from mail queue">
 
    <description>
       <include file = "jobs/JobSchedulerDequeueMailJob.xml"/>
    </description>
     
    <script language      = "java"
            java_class    = "sos.scheduler.job.JobSchedulerDequeueMailJob"/>
    
    <!-- repeat dequeueing in the given interval of seconds (1 hour) -->
    <run_time let_run = "yes"
              repeat  = "3600"/>
     
 </job>