Hi Chris,

` I need to stop IoTDB data-node and config-node, change the configuration
and start config-node and data-node again.` You mean that you want to
restart the DataNode in the same process? I don't think it's a good idea
for current IoTDB because DataNode.stop() method doesn't make sure that it
will clear the resource safely and totally.

And for the `singletons` part, I vote for using a component framework to do
the weaving


Best regards,
-------------------------
Yuan Tian


On Tue, Jan 9, 2024 at 5:17 PM Christofer Dutz <[email protected]>
wrote:

> Hi all,
>
> So, I am currently fighting with something in IoTDB. It’s the usage of
> static variables all over the place.
>
> The problem I’m having, is that I’m working on building an App that allows
> to run IoTDB in various forms of deployment. So, depending on the type of
> deployment, you can switch the location of where data is stored.
>
> So, in my case I’ve started IoTDB, and it stores data in a directory
> “data-1” … so if I want to change this to “data-2” I need to stop IoTDB
> data-node and config-node, change the configuration and start config-node
> and data-node again.
>
> However, we are using singletons everywhere … the problem now is that
> these don’t get re-initialized and they keep on pointing to “data-1”. Right
> now, I’m preparing a PR, where I can manually trigger a re-initialization
> of these singletons, by adding a static “reinitializeStatics()” method to
> them. But that’s just a super-ugly hack.
>
> The much better solution would be to not need statics, but to either
> manually weave the components together or to use a component framework to
> do the weaving.
>
> The benefit would also definitely be, that we could start running tests
> without forking processes and we could probably even re-use VMs over tests.
>
> What do you folks think?
>
> Chris
>

Reply via email to