Problematic use-case: a process creates an SSG group and serializes its ID into a file. A component running on the same process needs the group ID. It doesn't know that the creator/member of the group ID is in the same process, so it uses ssg_group_id_deserialize. This function fails because the group ID already exists in SSG's global table of groups.
Short term solution: upon deserializing the file, if the group ID exists in the table, just return that group ID instead of continuing to readfrom the file (maybe there is some reference counting to add so that when the client destroys the group ID it doesn't actually get destroyed until the creator itself destroyed it).
Longer term solution: remove the use of global variables.
Problematic use-case: a process creates an SSG group and serializes its ID into a file. A component running on the same process needs the group ID. It doesn't know that the creator/member of the group ID is in the same process, so it uses
ssg_group_id_deserialize
. This function fails because the group ID already exists in SSG's global table of groups.Short term solution: upon deserializing the file, if the group ID exists in the table, just return that group ID instead of continuing to readfrom the file (maybe there is some reference counting to add so that when the client destroys the group ID it doesn't actually get destroyed until the creator itself destroyed it).
Longer term solution: remove the use of global variables.