[SAGA-RG] small issue in SAGA specs

Andre Merzky andre at merzky.net
Tue Oct 30 03:24:05 CDT 2007


Hi Ceriel, 

Quoting [Ceriel Jacobs] (Oct 30 2007):
> 
> Andre Merzky wrote:
> >Thanks, that is a good catch - I fixed that in CVS.
> >
> >It think, however, that the issue on remove_metric is
> >reversed: IncorrectState does not make sense on the
> >metric.remove_callback(), as that should be possible on a
> >final metric.  
> >
> >So I removed added IncorrectState to
> >monitorable.add_callbacj, and removed it from
> >metric.remove_callback.  Does that make sense for you?
> 
> So metric.remove_callback on a final metric always gives
> DoesNotExist? (You cannot add callbacks to a final metric,
> so the metric cannot have callbacks).

A metric can become final during their lifetime, so a
callback may have been added earlier.  For example, the
job.state metric will get final when the job enters a final
state.  So, if you have the following:

  saga::job    j = js.create_job (jd);
  saga::metric m = job.get_metric ("job.state"); 

  int cookie = m.add_callback (my_cb);

  // cb prints "New"

  j.run ();
 
  // cb prints "Running"

  j.wait ();

  // cb prints "Done"

  // metric is final now, so the cb will never be invoked
  // again - but the cb should still be removable, i.e. in
  // order to release shared resources hold by the cb.

  m.remove_callback (cookie);

In this case, no exception is thrown.  Yes, a DoesNotExist
exception would be thrown if, for example, the cookie is
used twice for removal - but a IncorrectState exception
would make no sense, IMHO.

Cheers, Andre.


> Ceriel
> 



-- 
No trees were destroyed in the sending of this message, however,
a significant number of electrons were terribly inconvenienced.


More information about the saga-rg mailing list