This message was deleted.
# general
s
This message was deleted.
z
In order for this to be an option, there would have to be derived classes of StorageEngineFactory for each of these options right?
This is exactly right. We'd need instantiations of StoreEngineFactory, StorageEngine and StorageEngine partition (and there are a few examples of these in the codebase)
Also wondering if for example there is some boolean flag in the davinci client config, should there be a new derived class of the DaVinciClient that is instantiated if that flag is true or should it be defined in the DaVinciClient interface to be used by all derived classes?
We should be trying to use the same main implementation of the davinci client. Today this implementation is coded (or at least, should be!) to the storage engine abstraction. Our goal is to avoid make new davinci clients as the logic in there is quite complex.
The main challenge is going to be in how to define how to pass this to the davinci client. Today this is all wrapped behind a factory, so we'd probably have to add code to that factory to accept something. This kind of runs contrary to some other cases we have in the code base where we use ReflectionUtils to instantiate different object implementations based on a specified string that is the class path of the object. That can still work? Maybe? But my initial intuition is that client code is probably going to want some customization that will be hard to predict, and I'm betting there will be folks who will want to retain reference to some objects that are passed into their implementation of the StorageEngineFactory
e
I was wondering about that too, our goal is to expose the StorageEngineFactory to the client code so that a reference to a customized StorageEngine object can be held there, based on some parameters possibly that are now being passed to the StorageEngineFactory right?
I'm betting there will be folks who will want to retain reference to some objects that are passed into their implementation of the StorageEngineFactory
why does using ReflectionUtils to instantiate a generic StorageEngine object of some sort (I think in this case?) cause this problem?
...client code is probably going to want some customization that will be hard to predict
Also for this part, I want to be explicit in what customizations we are talking about. Is the goal just to have methods in an instance of RocksDBStorageEngine for example be callable from DaVinci?