-
Notifications
You must be signed in to change notification settings - Fork 877
Description
After fixing #3898 GeoJson would break entirely (it's already far from ideal today). Under lazy handler initialization the passed in connector is not ready to accept new commands and will throw. The query should be moved onto a different connection (anything else needs design work for the factory contract).
The next issue is, multiplexing has all connections share the same mapper and therefore the same write lock for handler inits. As a result any GeoJson(Factory) IO would block all connections from progressing for a while. We could instead spin the work off as a Task.Run item, caching the task (and passing it to the handler). However doing that means any errors don't get caught by #3897 anymore so it needs some careful refactoring to make sure any task errors don't result in the handler being broken. It would also potentially add sync over async.
An alternative would be to introduce new apis for plugins to register some out of band init actions.