well, something dark and obscure is happening ...... either logger.error('Error cleaning up') logger.error('Error retrieving status') logger.error(' error popping tasks') logger.debug('Assigning tasks...') "must" happen
On Tuesday, March 26, 2013 11:02:22 PM UTC+1, Paolo valleri wrote: > > I will try to update sqlite as you suggested asap. > I tried your scheduler but I cannot see any error. In the meanwhile I have > seen that when the following logs are missing > "INFO - TICKER: workers are 1" > "INFO - TICKER: tasks are 0" > even the log: "DEBUG - Assigning tasks..." is missing. > could this mean that the function wrapped_assign_tasks is not called at > all? > > > > > Paolo > > > 2013/3/26 Niphlod <nip...@gmail.com <javascript:>> > >> here's the patch. I purposedly blocked the underlying db from another >> terminal to see what could be the issue, but I can't reproduce in other way >> what is happening on your system. Enough said, as soon as the db is >> unlocked, normal operations resume. >> There are a few error() calls to the logger, now if something goes wrong >> it's reported accordingly. >> >> PS: if you want to stick to SQLite, it's better to install the most >> updated sqlite adapter, on unix-like OSes is as simple as (giving standard >> build tools are available) >> >> pip install >> http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz--global-option >> build_static >> >> and then activating WAL (reduces the chances of a locked db. Not lock >> free, but certainly helps out). >> WAL can be activated once on every db with a simple >> PRAGMA journal_mode=WAL >> or, if you are on a recent web2py distribution >> >> def activate_wal(db_instance): >> db_instance.execute('PRAGMA journal_mode=WAL;') >> >> db = DAL('sqlite://storage.sqlite', after_connection=activate_wal) >> >> >> >> On Tuesday, March 26, 2013 8:05:44 PM UTC+1, Paolo valleri wrote: >> >>> I can make few tests but only tomorrow, I will be out for the rest of >>> the week. >>> If you send me a patch with the new log statement, I will come back with >>> the result asap. >>> >>> Paolo >>> >>> >>> 2013/3/26 Niphlod <nip...@gmail.com> >>> >>> whoa. seems that something wrong is happening trying to assing new >>>> tasks.... >>>> normally, every >>>> web2py.scheduler.mapserver#**7791 - INFO - TICKER: I'm a ticker >>>> should be followed closely by the lines >>>> web2py.scheduler.mapserver#**7791 - INFO - TICKER: workers are 1 >>>> web2py.scheduler.mapserver#**7791 - INFO - TICKER: tasks are 0 >>>> While in your case for several times those lines are not present.... >>>> The fact is that the assignment is wrapped yet in a try except clause >>>> and every exception should be logged as well, but your log doesn't show >>>> anything of that. >>>> >>>> I can add more debug lines to the scheduler but this didn't ever happen >>>> on all my platforms, so without reproducing it I'm a little bit unsure >>>> what >>>> the fix can be. >>>> >>>> >>>> On Tuesday, March 26, 2013 4:26:11 PM UTC+1, Paolo valleri wrote: >>>> >>>>> the flle! sorry... >>>>> >>>>> Paolo >>>>> >>>>> >>>>> 2013/3/26 paolo....@gmail.com <paolo....@gmail.com> >>>>> >>>>>> If can be useful, I attached part of the log file in which demo1 is >>>>>> executed. >>>>>> First execution: 2013-03-26 15:52:31 >>>>>> second execution: 2013-03-26 15:58:55 (+384s) >>>>>> >>>>>> Paolo >>>>>> >>>>>> >>>>>> 2013/3/26 Paolo valleri <paolo....@gmail.com> >>>>>> >>>>>> >>> import sqlite3 >>>>>>> >>> print sqlite3.version >>>>>>> 2.6.0 >>>>>>> >>> print sqlite3.sqlite_version >>>>>>> 3.7.9 >>>>>>> But, if the db lock is not the problem, the test application is very >>>>>>> easy, where is it supposed to be the problem? >>>>>>> >>>>>>> >>>>>>> On Tuesday, March 26, 2013 2:32:50 PM UTC+1, Niphlod wrote: >>>>>>>> >>>>>>>> I find hard to believe that with a single worker, with that >>>>>>>> function that basically just prints something and an execution every >>>>>>>> 300 >>>>>>>> seconds the problem lies into a lock, unless the SQLite library >>>>>>>> available >>>>>>>> on your system is reallly old. >>>>>>>> >>>>>>>> On Tuesday, March 26, 2013 2:21:21 PM UTC+1, Paolo valleri wrote: >>>>>>>>> >>>>>>>>> When yesterday I saw demo1 in timeout with ps auxf I have seen >>>>>>>>> that a new process was created. For this reason I started to debug >>>>>>>>> scheduler and I asked how to log etc. >>>>>>>>> Moreover, I restarted the scheduler manually so I am not able to >>>>>>>>> understand if the other different names are for an internal problem >>>>>>>>> or >>>>>>>>> something different. >>>>>>>>> Do you think that should be fixed by using a different db engine? >>>>>>>>> >>>>>>>>> Paolo >>>>>>>>> >>>>>>>>> On Tuesday, March 26, 2013 12:42:14 PM UTC+1, Niphlod wrote: >>>>>>>>>> >>>>>>>>>> with the default logging.conf the timestamp is present as in all >>>>>>>>>> other web2py-related logging .... >>>>>>>>>> >>>>>>>>>> PS: are you sure that the worker is not killed/restarted by any >>>>>>>>>> chance (see the worker_name in the scheduler_run table) >>>>>>>>>> >>>>>>>>>> On Tuesday, March 26, 2013 11:33:53 AM UTC+1, Paolo valleri wrote: >>>>>>>>>>> >>>>>>>>>>> I executed again demo1, I run it several times, I got even in >>>>>>>>>>> this case elapsed time between two consecutive executions around >>>>>>>>>>> 360 and >>>>>>>>>>> even more instead of 300. What can I do to understand what is not >>>>>>>>>>> working >>>>>>>>>>> correctly? >>>>>>>>>>> Moreover, I would suggest to add the timestamp to the scheduler >>>>>>>>>>> debug log. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Paolo >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2013/3/25 Niphlod <nip...@gmail.com> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Monday, March 25, 2013 10:46:12 PM UTC+1, Paolo valleri >>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> I didn't get your point, with one repetitive task, should I >>>>>>>>>>>>> start the scheduler with two or more workers? If so, I will try >>>>>>>>>>>>> it. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> The point is that the thread that manages some logic every >>>>>>>>>>>> heartbeat seconds is the one in charge of "waiting" 5 loops to >>>>>>>>>>>> trigger the >>>>>>>>>>>> additional logic to pick up new tasks (a repetitive task is just a >>>>>>>>>>>> new task >>>>>>>>>>>> to execute). If the process "doing the work" is busy processing >>>>>>>>>>>> the task >>>>>>>>>>>> and the underlying thread reaches the "let's assign tasks" loop, >>>>>>>>>>>> the logic >>>>>>>>>>>> will be skipped (it's unuseful to assign tasks if a worker is >>>>>>>>>>>> already >>>>>>>>>>>> processing them). So it can happen that even if the "assignment" >>>>>>>>>>>> time has >>>>>>>>>>>> come, if the worker is processing tasks it will skip the >>>>>>>>>>>> "assignment" >>>>>>>>>>>> >>>>>>>>>>>> Actually I have just seen the stop time, on average the task >>>>>>>>>>>>> completes it cycle in just a few seconds (~1-2). Given that, is >>>>>>>>>>>>> what you >>>>>>>>>>>>> have suggested still valid? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Nope. As I said it guaranteed that even in the case that the >>>>>>>>>>>> assignment loop falls into the timeframe of a RUNNING task, at the >>>>>>>>>>>> next >>>>>>>>>>>> round it will be picked up >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> Last but not least, demo1 has gone in timeout after one >>>>>>>>>>>>> successful cycle, this is very odd, How I can debug the scheduler >>>>>>>>>>>>> application and find its errors? >>>>>>>>>>>>> I am running scheduler as a linux service, as described here: >>>>>>>>>>>>> http://web2py.com/books/**defaul******t/chapter/29/13#Start-** >>>>>>>>>>>>> the-**sche****duler-as-a-Linux-**service-%**28up****start%29<http://web2py.com/books/default/chapter/29/13#Start-the-scheduler-as-a-Linux-service-%28upstart%29> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> SQLite locking is the most probable cause. >>>>>>>>>>>> The fastest way is to see what's happening is starting the >>>>>>>>>>>> scheduler with debug logging .... >>>>>>>>>>>> web2py.py -K appname -D 0 >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>>> --- >>>>>>>>>>>> You received this message because you are subscribed to a topic >>>>>>>>>>>> in the Google Groups "web2py-users" group. >>>>>>>>>>>> To unsubscribe from this topic, visit >>>>>>>>>>>> https://groups.google.com/d/**to****pic/web2py/u_PgzKLuQmw/** >>>>>>>>>>>> unsubsc****ribe?hl=en<https://groups.google.com/d/topic/web2py/u_PgzKLuQmw/unsubscribe?hl=en> >>>>>>>>>>>> . >>>>>>>>>>>> To unsubscribe from this group and all its topics, send an >>>>>>>>>>>> email to web2py+un...@googlegroups.com. >>>>>>>>>>>> For more options, visit https://groups.google.com/**grou**** >>>>>>>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>> >>>>>>> --- >>>>>>> You received this message because you are subscribed to a topic in >>>>>>> the Google Groups "web2py-users" group. >>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/** >>>>>>> to**pic/web2py/u_PgzKLuQmw/**unsubsc**ribe?hl=en<https://groups.google.com/d/topic/web2py/u_PgzKLuQmw/unsubscribe?hl=en> >>>>>>> . >>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>> web2py+un...@**googlegroups.com. >>>>>>> For more options, visit >>>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out> >>>>>>> . >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "web2py-users" group. >>>> To unsubscribe from this topic, visit https://groups.google.com/d/** >>>> topic/web2py/u_PgzKLuQmw/**unsubscribe?hl=en<https://groups.google.com/d/topic/web2py/u_PgzKLuQmw/unsubscribe?hl=en> >>>> . >>>> To unsubscribe from this group and all its topics, send an email to >>>> web2py+un...@**googlegroups.com. >>>> For more options, visit >>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>> . >>>> >>>> >>>> >>> >>> -- >> >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "web2py-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/web2py/u_PgzKLuQmw/unsubscribe?hl=en. >> To unsubscribe from this group and all its topics, send an email to >> web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.