On Sat, 28 Dec 2013 03:53:47 +0000 Chris Michael <[email protected]> said:

> thinking we should re-queue this thumb... Not just drop it..
> Something May be waiting for it....
> 
> Don't exit daemon. That's needed for other thumbs processing ...
> 
> Just requeue a failed one ...
> Can we find out (better) Why it failed ?? Bad file ?? Then drop... Fail 
> on access ? retry with it not locked (or something)...

no we don't want to re-queue. the thumbnail generation has taken 10 seconds
with no result. why will trying it again and again and again be good? skip and
move on. it's taking too long so it loses.

> dh
> 
> On 28/12/13 02:47, Carsten Haitzler wrote:
> > raster pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=b4411c90bf4ce72f589d3614238132cddf12702c
> >
> > commit b4411c90bf4ce72f589d3614238132cddf12702c
> > Author: Carsten Haitzler (Rasterman) <[email protected]>
> > Date:   Sat Dec 28 11:07:30 2013 +0900
> >
> >      ethumbd - if thumb gen takes too long don't just quit ethumbd, but
> > skip thumb
> > ---
> >   src/bin/ethumb_client/ethumbd.c | 64 +++++++++++++++++++++++++++++++++
> > +------- 1 file changed, 54 insertions(+), 10 deletions(-)
> >
> > diff --git a/src/bin/ethumb_client/ethumbd.c
> > b/src/bin/ethumb_client/ethumbd.c index a57ee3d..e992252 100644
> > --- a/src/bin/ethumb_client/ethumbd.c
> > +++ b/src/bin/ethumb_client/ethumbd.c
> > @@ -166,6 +166,7 @@ struct _Ethumbd
> >      Ethumbd_Queue queue;
> >      double timeout;
> >      Ecore_Timer *timeout_timer;
> > +   Ecore_Timer *hang_timer;
> >      Ethumbd_Slave slave;
> >
> >      Ecore_Event_Handler *data_cb;
> > @@ -248,19 +249,16 @@ static Eina_Bool
> >   _ethumbd_timeout_cb(void *data)
> >   {
> >      Ethumbd *ed = data;
> > -
> > +
> >      ecore_main_loop_quit();
> >      ed->timeout_timer = NULL;
> > -
> > -   return 0;
> > +   return EINA_FALSE;
> >   }
> >
> >   static void
> >   _ethumbd_timeout_start(Ethumbd *ed)
> >   {
> > -   if (ed->timeout < 0)
> > -     return;
> > -
> > +   if (ed->timeout < 0) return;
> >      if (!ed->timeout_timer)
> >        ed->timeout_timer = ecore_timer_add(ed->timeout,
> > _ethumbd_timeout_cb, ed); }
> > @@ -268,9 +266,7 @@ _ethumbd_timeout_start(Ethumbd *ed)
> >   static void
> >   _ethumbd_timeout_stop(Ethumbd *ed)
> >   {
> > -   if (!ed->timeout_timer)
> > -     return;
> > -
> > +   if (!ed->timeout_timer) return;
> >      ecore_timer_del(ed->timeout_timer);
> >      ed->timeout_timer = NULL;
> >   }
> > @@ -278,11 +274,54 @@ _ethumbd_timeout_stop(Ethumbd *ed)
> >   static void
> >   _ethumbd_timeout_redo(Ethumbd *ed)
> >   {
> > -   //if (!ed->queue.count)
> >      _ethumbd_timeout_stop(ed);
> >      _ethumbd_timeout_start(ed);
> >   }
> >
> > +static Eina_Bool
> > +_ethumbd_hang_cb(void *data)
> > +{
> > +   Ethumbd *ed = data;
> > +
> > +   ed->hang_timer = NULL;
> > +   if (ed->processing)
> > +     {
> > +        ERR("timout while processing thumb");
> > +        if (ed->slave.exe) ecore_exe_kill(ed->slave.exe);
> > +     }
> > +   return EINA_FALSE;
> > +}
> > +
> > +static void
> > +_ethumbd_hang_start(Ethumbd *ed)
> > +{
> > +   double tim = ed->timeout;
> > +
> > +   if (tim < 0) tim = 10.0;
> > +   else
> > +     {
> > +        tim = tim / 3.0;
> > +        if (tim > 10.0) tim = 10.0;
> > +     }
> > +   if (!ed->hang_timer)
> > +     ed->hang_timer = ecore_timer_add(tim, _ethumbd_hang_cb, ed);
> > +}
> > +
> > +static void
> > +_ethumbd_hang_stop(Ethumbd *ed)
> > +{
> > +   if (!ed->hang_timer) return;
> > +   ecore_timer_del(ed->hang_timer);
> > +   ed->hang_timer = NULL;
> > +}
> > +
> > +static void
> > +_ethumbd_hang_redo(Ethumbd *ed)
> > +{
> > +   _ethumbd_hang_stop(ed);
> > +   _ethumbd_hang_start(ed);
> > +}
> > +
> >   static int
> >   _ethumb_dbus_check_id(Ethumbd_Object *eobject, int id)
> >   {
> > @@ -408,6 +447,7 @@ _generated_cb(Ethumbd *ed, Eina_Bool success, const
> > char *thumb_path, const char free(ed->processing);
> >      ed->processing = NULL;
> >      _ethumbd_timeout_redo(ed);
> > +   _ethumbd_hang_stop(ed);
> >   }
> >
> >   static void
> > @@ -525,6 +565,8 @@ _ethumbd_slave_del_cb(void *data, int type EINA_UNUSED,
> > void *event) if (ev->exe != ed->slave.exe)
> >        return 1;
> >
> > +   _ethumbd_hang_stop(ed);
> > +
> >      if (ev->exited)
> >        ERR("slave exited with code: %d", ev->exit_code);
> >      else if (ev->signalled)
> > @@ -682,6 +724,7 @@ _process_setup(Ethumbd *ed)
> >   static void
> >   _process_file(Ethumbd *ed)
> >   {
> > +   _ethumbd_hang_redo(ed);
> >      _ethumbd_child_write_op_generate
> >        (&ed->slave, ed->queue.current, ed->processing->file,
> >         ed->processing->key, ed->processing->thumb,
> > ed->processing->thumb_key); @@ -961,6 +1004,7 @@ _ethumb_dbus_ethumb_new_cb
> > (const Eldbus_Service_Interface *interface, const Eldb EINA_TRUE);
> >      _ethumbd_child_write_op_new(&ed->slave, i);
> >      _ethumbd_timeout_redo(ed);
> > +   _ethumbd_hang_redo(ed);
> >
> >    end_new:
> >      reply = eldbus_message_method_return_new(msg);
> >
> 
> 
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT 
> organizations don't have a clear picture of how application performance 
> affects their revenue. With AppDynamics, you get 100% visibility into your 
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to