Fork doesn't allow a client to issue gekkofs server requests
Related to #238 (closed)
Forking a client replicates all the variables, but not the threads. This avoids an intercepted call to process the request inside the hermes
/mercury
queue.
A modification in hermes
, as for example multiple hermes
per getppid()
using a map, can solve the process issue. However, mercury only allows a domain per app (static variable : na_ofi_domain_list_g
), so the listener threads of libfabric
are not created in the fork child.
This second issue, cannot be solved without a refactor of mercury
that could allow multiple instances (and launching multiple libfabric
listeners). However, success doing that is not guaranteed. Changing static with thread_local
, has other implications, and it is not a solution.