I think I found the culprit in another comment of yours!
The event that identified the issue was a Gateway Timer Script in a project. If what you are saying here is true, then I wonder if that's why I don't actually get the project properties, or even the project name in the getRpcHandler
method until AFTER some client is opened that instantiates the rpc handler.
The function executes, calls the rpc handler with no project name, can't get the properties because the name is blank, returns a blank property set, and then can't get the connection that its defined to get!
Does this sound remotely close to what may be happening? If so then I may just need to make a default database per gateway, and not per project.