BigdataSail.getConnectionInternal() needs to be refactored. It is properly used to obtain a connection from either getReadWriteConnection(), getUnisolatedConnection(), or getReadOnlyConnection(). However, it should not be used to perform initialization of that connection since this pattern fails to provide appropriate initialization for the public methods getReadWriteConnection(), getUnisolatedConnection(), and getReadOnlyConnection(long).
The impact of the current code structure is that the SERVICE hook is not applied and the changeLog is not initialized unless getConnection() is invoked on the Sail.
The change is to lift out that initialization logic into a new private method and then invoke it from each of:
Note that getReadOnlyConnection() does not actually initialize either the SERVICE hook or the changeLog. However, it would be useful to collect all the connection initialization logic into a single location.