Hmm, maybe too early so don't hesitate to shout if studid: why not having a
config manager sources can register in it and if this manager has >= 1
source then the thread is active otherwise it is destroyed
(running.set(false))
The source would be able to pass its refresh logic (as a function more or
less) the thread will execute in a safe manner (if fail - log but dont quit
the loop) and it returns a boolean to ask to propagate changes upstream or
not.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mar. 5 juin 2018 à 09:23, Jean-Louis MONTEIRO <jeano...@gmail.com> a
écrit :

> >> Some values may have been updated, some might have been deleted and some
> >> other added.
> >> Returning a set might not be enough, isn't it?
>
> >We really only need the property names which got changed:
> >* new ones
> >* deleted ones
> >* the ones with different values
> >
> >So a Set<String> is fine.
>
> The thing is that you will get the key of everything that changed which
> requires to invalidate the cache for all entries (lock?).
> Or you would need to iterate all the keys, compare again old/new and delete
> entries from cache, do nothing for add (? they will be lazily added during
> lookup maybe) and invalidate the updated values.
>
> That seems to be heavy to handle for nothing has during compare we have all
> information already.
>
>
>
> Le mar. 5 juin 2018 à 09:10, Mark Struberg <strub...@yahoo.de.invalid> a
> écrit :
>
> > Hi JL!
> >
> > Thanks for the feedback!
> > And yes, this will also be important for ConfigJSR (and later mp-config
> as
> > well).
> >
> >
> > > First it's all about config, so maybe having a method name "diff" is
> > > enough. No need for "diffConfig".
> >
> > Well, diff alone is imo a bit too short as it doesn't have any context
> > about what to diff.
> > Thus I'd prefer diffConfig.
> >
> >
> > > Some values may have been updated, some might have been deleted and
> some
> > > other added.
> > > Returning a set might not be enough, isn't it?
> >
> > We really only need the property names which got changed:
> > * new ones
> > * deleted ones
> > * the ones with different values
> >
> > So a Set<String> is fine.
> >
> > LieGrue,
> > strub
> >
> >
> > > Am 05.06.2018 um 08:59 schrieb Jean-Louis MONTEIRO <jeano...@gmail.com
> >:
> > >
> > > Few thoughts ...
> > >
> > > I did not follow really deltaspike to be honest, but I do follow
> > MP-Config
> > > for instance.
> > >
> > > First it's all about config, so maybe having a method name "diff" is
> > > enough. No need for "diffConfig".
> > >
> > > Some values may have been updated, some might have been deleted and
> some
> > > other added.
> > > Returning a set might not be enough, isn't it?
> > >
> > > Jean-Louis
> > >
> > >
> > >
> > >
> > >
> > >
> > > Le mar. 5 juin 2018 à 08:55, Mark Struberg <strub...@yahoo.de.invalid>
> a
> > > écrit :
> > >
> > >> Hi folks!
> > >>
> > >> For the new DS-1.9 feature to 'push' config changes we need an
> algorithm
> > >> to detect whether an old and a new config differs.
> > >>
> > >> The signature would be something like:
> > >>
> > >> /**
> > >> *
> > >> * A Set of all the attributes which differ between the old and new
> > config
> > >> Map. An empty Set if there is no difference.
> > >> */
> > >> public Set<String> diffConfig(Map<String, String> oldValues,
> Map<String,
> > >> String> newValues)
> > >>
> > >> This is intended for e.g. background threads which read from a
> database
> > >> once per second and compare the old values with the new ones.
> > >> If there was any difference then the set of attributes get reported
> back
> > >> to the Config (which in turn clears the caches, etc).
> > >>
> > >>
> > >> Now where to put this method?
> > >>
> > >> My candidate would be
> > >> org.apache.deltaspike.core.api.config.ConfigResolver.ConfigProvider
> > >> I do not want to put it into the Config interface itself because it is
> > not
> > >> a user contract thingy.
> > >> And I also do not want to put it into ConfigResolver becasue I'd like
> to
> > >> have the impl only available internally and not bloat the
> ConfigResolver
> > >> any further.
> > >>
> > >> Wdyt?
> > >>
> > >> LieGrue,
> > >> strub
> >
> >
>

Reply via email to