jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig (JIRA) <j...@apache.org>
Subject [jira] [Commented] (OAK-3815) Add refresh callback support to Tracker
Date Tue, 05 Jan 2016 10:13:39 GMT

    [ https://issues.apache.org/jira/browse/OAK-3815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15082765#comment-15082765

Michael Dürig commented on OAK-3815:

IIUC the purpose of this issue is to prevent potentially expensive calls to {{Tracker#getServices}}.
If so, wouldn't a better solution just optimise that call? The patch actually looks like such
a optimisation but puts the burden on the consumer who needs to implement the callback and
re-get the the list of services. Why not cache the list of services in {{Tracker}} and use
the callback as an internal mechanism for maintaining this cache?

> Add refresh callback support to Tracker
> ---------------------------------------
>                 Key: OAK-3815
>                 URL: https://issues.apache.org/jira/browse/OAK-3815
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>            Priority: Minor
>             Fix For: 1.3.14
>         Attachments: OAK-3815-v1.patch
> Currently the {{Tracker}} only has access to list of registered services but there is
no way to know if the services have changed and one has to re obtain the set of services.
For certain usecases its desirable to know (get notified) if the set of services registered
against a specific type have changed. 
> For e.g. in OAK-3576 the services are to be registered against set of NodeTypes and each
service provides set of nodeTypes it support. Creating that structure (nodeType -> service)
is to be avoided on the critical path.
> So far Tracker serves the purpose well. One can just open the tracker and get the list
of services and create that nodeType -> service mapping. However in case of OSGi (or in
other modes also) if a new service is registered there is no way currently to get notified.
As of now one needs to have reference property added to some OSGi component with bind and
unbind callbacks. Given we already make use of {{ServicetTracker}} and do get notified when
services get updated we should easily be able to make use of that.
> For such cases I would like to propose registering a callback which should get notified
if there is some change in set of services registered against a specific type. Then one can
register the callback while creating the Tracker instance 

This message was sent by Atlassian JIRA

View raw message