Feature Requests


This page lists requests for new features and fixes to Blackhawk. If you want to request or discuss about new functionality or bugs, you can edit this page or post a comment.

Wanted features:
  • Support for getting new versions of publications from the network (fixed in v0.3)
  • Support for subscribe-before-publish (fixed in v0.3)
  • Better support for reliably getting all versions of a publication (fixed in v0.3)
  • Increase numer of
    • publications in a scope
      • Workaround: in v0.3.x (x > 0) you can use “rollover” scopes (SIds start with 0xaa) where old RIds are replaced with new ones when the limit is reached.
        (The old publication can no longer be subscribed to as before, although they still remain in memory as garbage collection hasn’t yet been implemented.)
    • versions of a publication
      • Workaround: avoid using versions (this is, in fact, a good practice anyway). Use new RIds and rollover scopes instead.
    • memory pages in a publication
      • Workaround: split your data into several publications.
    • pending node-local events
      • Workaround: add short sleeps to your code so that scoped and laird can process the events.
  • Garbage collection and related features
Known bugs:
  • Closing a pub/sub application after unloading the psfs module (e.g., with unloadps) can cause the kernel to crash
    • Cause: Detachment function pointer (or the filterops data structure) used in the kernel when closing files/kqueues is no longer valid when the module has been unloaded.
    • Suggested fix: Prevent unloading of the module if we know that there are open file descriptors and/or kevent registrations that belong to publications.
    • Workaround: Before unloading, close all apps that use pub/sub (recommended), or only use the reloadps command.
  • When publishing many publications at once, some of them are not added to scopes, and some of them do not trigger network metadata updates
    • Cause: The event pages get full before the helpers have processed the generated events
    • Workaround: Add sleeps (e.g., usleep(1) in C or time.sleep(0.001) in Python) to your code after, e.g., 20 publish calls