G'Day Niels, sorry it has taken me until the new year to return to this
conversation.

We discussed this pull request in the last geoserver meeting:
* Andrea is creating a draft pull request review guide
<https://github.com/geoserver/geoserver/wiki/Pull-request-review-guide>
page to try and prevent us tripping up this way in the future.
* And I have created a proposal GSIP-136
<https://github.com/geoserver/geoserver/wiki/GSIP-136> for the api change
you outline in your pull request.

I also had a chance to talk to Gabriel about an event notification
strategy. He echoed your words that doing this consistently was an known
unsolved problem - so I have creating a technical debt page
<https://github.com/geoserver/geoserver/wiki/Consistent-Event-Notification>
with
some feedback from Kevin on GWC.

--
Jody Garnett

On 23 December 2015 at 05:12, Niels Charlier <ni...@scitus.be> wrote:

> On 22-12-15 23:00, Jody Garnett wrote:
>
>>
>> Think you are missing the idea - in most cases these resources are not
>> unpacked on disk and are retrieved by JDBCResourceStore. I do not know what
>> that will do to performance - but that is why JDBCResourceStore is a
>> community module. If we need to cache the bytes for small resources then
>> those nodes would indeed need to listen for events to keep their cache in
>> sync.
>>
>> So what does have to listen for events? Only a few things (templates,
>> security files, ...) if you would like to search the code we can have a
>> better conversation.
>>
> I think we need to be more on the same page on that which we want to
> accomplish. What Gabriel and I wanted to accomplish in this project, is to
> make Resource.addListener() work for jdbcstore as expected, under all
> circumstances. Not to keep anything particular in sync: that is the job of
> the module developers.
> The developers must be sure that if they call Resource.addListener, they
> will be notified of any changes in the resource: code that works for the
> default store MUST also work for the jdbc store, that is the aim. When they
> use the file system store, they know they will be notified if someone edits
> the file on disk. When using the jdbcstore, they must also be notified of
> any change.  We decided to assume nobody will edit the files in the db
> directly, so that we only have to deal with the issue of multiple instances.
>
> I had started with a single place to register for events, and refactored
>> as you see based on making the code examples easier to use. But I guess you
>> are correct - this approach is my own recommendation - as an implementor
>> you can choose to implement heavyweight resource objects (but we do not
>> have any dispose() methods since that was not the plan).
>>
> Heavyweight resource objects would be nearly impossible with the existing
> API, but my point was only that the single place to register events is
> encapsulated by the ResourceStore API and thus inaccessible to other
> modules. The clustering modules do not have access to it, if limited to
> using the ResourceStore API. So this fact remains irrelevant as far as the
> implementation of these modules is concerned.
>
> I do not see how that matters, you are defining new API which could be
>> injected into the ResourceStore implementation if needed.
>>
>
> Indeed, and I was explaining why because you questioned the fact I am
> doing that :)
>
> I am trying to avoid duplicating event notification across a cluster three
>> times.
>>
> That is absolutely impossible in my implementation. And in fact, that
> would only have been a risk if we went for a listening-and-redispatching
> strategy. That is one reason I called it error-prone.
>
>
> Regards
> Niels
>
------------------------------------------------------------------------------
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to