There are two potential issues here:
- if a callback makes another implicit gRPC call, it can cause re-entrancy problems (e.g. the gRPC connection can be shut down)
- repeated callbacks can queue client side and cause gil contention in the client Python
In any case, the current implementation can cause problems with calls like this:
session.ensight.objs.core.parts[("hood", "engine")].set_attr(session.ensight.enums.VISIBLE, False)
for a class-based callback associated with the "VISIBLE" attribute. The current work-around is to use macro expansion in the callback string to avoid the conflict in most cases.