Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#715 Add garbage collection support for event semaphores

open
nobody
5
2012-09-07
2012-08-29
asomers
No

If you submit a 'SEM WAIT EVENT ...' request, then delete its handle (such as by killing the STAX job), the request will persist indefinitely, waiting for an event that may never get posted. The problem is exacerbated by the facts that A) there is not 'SEM CANCEL EVENT' request analogous to 'SEM CANCEL MUTEX' and B) you cannot delete an event semaphore with pending Waiters. The only wait to remove the waiters is to either post the event or restart STAFProc.

This bug seems very similar to bug #2861597, which dealt with the QUEUE service instead of the SEM service.

Discussion

  • asomers
    asomers
    2012-08-29

    Shell script to reproduce the problem

     
    Attachments
  • asomers
    asomers
    2012-08-29

    STAX file used by the shell script

     
    Attachments
  • Sharon Lucas
    Sharon Lucas
    2012-09-04

    This is because the STAF SEM service does not provide garbage collection support for event semaphores. Garbage collection support is only provided for mutex semaphores. This is why the STAF User's Guide only talks about garbage collection support for mutex semaphores, not event semaphores, and why there is no GARBAGECOLLECT option for a "SEM WAIT EVENT" request and no "SEM CANCEL EVENT" request.

    If you require garbage collection support for event semaphores, post again and I'll change this to a feature request (instead of a bug) and it will go into the queue of open STAF feature requests. I do not know when it will be implemented.

    Note that garbage collection support for mutex semaphores created via the SEM service and for the RESPOOL service was first added in STAF V3.0.0. No one else has requested garbage collection support for event semaphores.

     
  • asomers
    asomers
    2012-09-04

    I think that this would be a very good feature to have. Without it, there is the potential for resource leaks. Event requests can linger forever and so can the event semaphores themselves. A SEM CANCEL EVENT request would allow the resources to be freed, albeit manually.

    At my site, I typically see up to a hundred or so zombie waiters, but my work isn't otherwise blocked.

     
  • Sharon Lucas
    Sharon Lucas
    2012-09-05

    • labels: 712604 --> Service::Sem
     
  • Sharon Lucas
    Sharon Lucas
    2012-09-07

    • summary: 'sem wait event' requests do not get garbage collected --> Add garbage collection support for event semaphores