[Backgroundrb-devel] Intermittent "can't convert Float into Hash" and results.rb
skaar
skaar at waste.org
Fri Jan 12 15:29:09 EST 2007
I'm going to try to use synchronize from Monitor, which is supposed to
be reentrant. I just need to have a closer look on how the MonitorMixin
works.
/skaar
* Mason Hale (masonhale at gmail.com) [070112 12:01]:
> Following up on this item, I found that if I remove any calls to add
> values to the results_worker hash, the errors described below go away.
>
> I also found that in some cases the call to 'BackgrouDRb::Results::stored'
> was returning the symbol :backgroundrb_results instead of a hash, thus
> triggering the "can't convert Symbol to Hash" TypeError.
>
> I made a pass at synchronizing the WorkerResults []= and [] methods via
> Mutex, but was unsuccessful. I suspect it may have something to do with
> Mutex not being reentrant.
>
> See:
> [1]http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/24470
> [2]http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/172652
>
> In any case, avoiding use of results avoids the issue. For the time being,
> I'm storing any process state information in a database instead.
>
> Mason
>
> On 1/10/07, skaar <[3]skaar at waste.org> wrote:
>
> It might be that we have to introduce a mutex in the results worker
> where this happens. I'll try to get this reproduced sometime this
> weekend.
>
> /skaar
>
> * Mason Hale ([4]masonhale at gmail.com) [070109 14:42]:
> > I'm getting a similar error, here a partial stack trace:
> >
> > 20070108-20:17:45 (27597) can't convert Symbol into Hash -
> (TypeError)
> > 20070108-20:17:45 (27597)
> > /opt/lss/demo/0.4-06/vendor/plugins/backgroundrb/server/lib/backgroundrb/results.rb:40:in
> > `merge!'
> > 20070108-20:17:45 (27597)
> > /opt/lss/demo/0.4-06/vendor/plugins/backgroundrb/server/lib/backgroundrb/results.rb:40:in
> > `[]='
> >
> > The process will run fine for hours or days, but then will stop
> with this
> > error. When it happens it takes now the entire BackgrounDRb server.
> (I'm
> > addding some begin/rescue blocks to hopefully prevent that.)
> >
> > I've got Ruby 1.8.5p12 compiled with gcc 3.4.6 on RedHat Linux.
> >
> > This also seems to occur with more than one process (running the
> same
> > worker class) at the same tim
> >
> > Any ideas?
> >
> > Mason
> >
> > On 1/7/07, Robert Bjarnason <[1]robert.bjarnason@ [5]gmail.com>
> wrote:
> >
> > Hi Bob,
> >
> > Thanks for the pointer, I agree this is probably not a directly
> > backgroundrb related problem. I built Ruby 1.8.4 on a Debian
> Linux box
> > using gcc version 3.3.5.
> >
> > Warm regards,
> > Robert Bjarnason
> >
> > Bob Hutchison wrote:
> > > Hi,
> > >
> > > This sounds a bit like the trouble in OS X where you'd get a
> Fixednum
> > > to String error. This was caused by a bug in the gcc 4.0
> compiler. The
> > > solution on OS X is to re-compile Ruby with -O1 optimisation
> level or
> > > switch to the gcc 3.x compiler). As I understand it, with linux
> you
> > > have the additional option of installing a newer version of gcc
> 4.x
> > > and recompiling (I'm using 4.0.2 on one of my linux boxes and
> have
> > > never seen the problem).
> > >
> > > Cheers,
> > > Bob
> > >
> > > On 4-Jan-07, at 11:44 AM, Robert Bjarnason wrote:
> > >
> > >> Hi,
> > >>
> > >> I'm using backgroundrb 0.2.1 in a production environment and
> for most
> > >> parts I'm very happy. We are using it to do some heavy video
> editing
> > on
> > >> the server side and it works great except that under, what
> seems
> > heavy
> > >> load the below problem happens intermittently.
> > >>
> > >> The problem has only happened 5 times out of over 500 runs by
> our
> > >> backgroundrb worker.
> > >>
> > >> This is the code in our worker:
> > >> logger.debug("info : progress: #{progress}")
> > >> progress_percent = progress * 100
> > >> if progress_percent >= 100
> > >> results[:progress] = 99.99
> > >> else
> > >> results[:progress] = progress_percent <-- Line
> of the
> > >> crash
> > >> end
> > >>
> > >> Here is the error:
> > >> can't convert Float into Hash
> > >>
> > >> And the beginning of the stack trace:
> > >>
> > /.../ContentStore/vendor/plugins/backgroundrb/server/lib/backgroundrb/results.rb:40
> > >>
> > >> :in
> > >>
> > `merge!'/.../ContentStore/vendor/plugins/backgroundrb/server/lib/backgroundrb/results.rb:40
> > >>
> > >> :in `[]='/.../ContentStore/lib/workers/content_worker.rb:40
> > >> :in
> > `execute_mp4box'/.../ContentStore/lib/workers/content_worker.rb:22:
> > >> in
> `execute_mp4box'/.../ContentStore/lib/workers/content_worker.rb:21
> > >> :in
> > `execute_mp4box'/.../ContentStore/lib/workers/content_worker.rb:181
> > >> :in
> > >>
> > `do_work'/.../ContentStore/vendor/plugins/backgroundrb/server/lib/backgroundrb/worker.rb:55:
> > >>
> > >> ...
> > >>
> > >> The problem seems to happen only under heavy load where more
> than 1
> > >> worker process is active at the same time.
> > >>
> > >> Any ideas or leads?
> > >>
> > >> Thanks,
> > >> Robert Bjarnason
> > >>
> > >> _______________________________________________
> > >> Backgroundrb-devel mailing list
> > >> [2]Backgroundrb-[6]devel at rubyforge.org
> > >> [3]http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> > >
> > > ----
> > > Bob Hutchison -- blogs at
> > > <[4]http://www.recursive.ca/hutch/>
> > > Recursive Design Inc. -- <[5]http://www.recursive.ca/>
> > > Raconteur --
> <[6]http://www.raconteur.info/ >
> > > xampl for Ruby --
> > <[7]http://rubyforge.org/projects/xampl/>
> > >
> > >
> > >
> > >
> >
> > _______________________________________________
> > Backgroundrb-devel mailing list
> > [8]Backgroundrb-[7]devel at rubyforge.org
> > [9]http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> >
> > References
> >
> > Visible links
> > 1. mailto:[8]robert.bjarnason at gmail.com
> > 2. mailto:[9]Backgroundrb-devel at rubyforge.org
> > 3. [10]http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> > 4. [11]http://www.recursive.ca/hutch/
> > 5. [12]http://www.recursive.ca/
> > 6. [13]http://www.raconteur.info/
> > 7. [14]http://rubyforge.org/projects/xampl/
> > 8. mailto: [15]Backgroundrb-devel at rubyforge.org
> > 9. [16]http://rubyforge.org/mailman/listinfo/backgroundrb-devel
>
> > _______________________________________________
> > Backgroundrb-devel mailing list
> > [17]Backgroundrb-devel at rubyforge.org
> > [18]http://rubyforge.org/mailman/listinfo/backgroundrb-devel
>
> --
> ----------------------------------------------------------------------
> |\|\ where in the | s_u_b_s_t_r_u_c_t_i_o_n
> | | >=========== W.A.S.T.E. | genarratologies
> |/|/ (_) is the wisdom
> | [19]skaar at waste.org
> ----------------------------------------------------------------------
>
> References
>
> Visible links
> 1. http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/24470
> 2. http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/172652
> 3. mailto:skaar at waste.org
> 4. mailto:masonhale at gmail.com
> 5. http://gmail.com/
> 6. mailto:devel at rubyforge.org
> 7. mailto:devel at rubyforge.org
> 8. mailto:robert.bjarnason at gmail.com
> 9. mailto:Backgroundrb-devel at rubyforge.org
> 10. http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> 11. http://www.recursive.ca/hutch/
> 12. http://www.recursive.ca/
> 13. http://www.raconteur.info/
> 14. http://rubyforge.org/projects/xampl/
> 15. mailto:Backgroundrb-devel at rubyforge.org
> 16. http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> 17. mailto:Backgroundrb-devel at rubyforge.org
> 18. http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> 19. mailto:skaar at waste.org
> _______________________________________________
> Backgroundrb-devel mailing list
> Backgroundrb-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/backgroundrb-devel
--
----------------------------------------------------------------------
|\|\ where in the | s_u_b_s_t_r_u_c_t_i_o_n
| | >=========== W.A.S.T.E. | genarratologies
|/|/ (_) is the wisdom | skaar at waste.org
----------------------------------------------------------------------
More information about the Backgroundrb-devel
mailing list