You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Tomek Rękawek (JIRA)" <ji...@apache.org> on 2017/06/20 12:07:00 UTC

[jira] [Commented] (OAK-6375) RevisionGCMbeans are not filtered correctly in the RepositoryManagement

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

Tomek Rękawek commented on OAK-6375:
------------------------------------

Maybe we can modify the WhiteboardUtils#registerMBean() method, so it adds all the passed attributes to {{jmx.objectname}} AND uses them for the whiteboard register() method as well?

{noformat}
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
index 7ec0bc7..6a5e6b2 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
@@ -86,9 +86,12 @@ public class WhiteboardUtils {
             Hashtable<String, String> table = new Hashtable<String, String>(attrs);
             table.put("type", JmxUtil.quoteValueIfRequired(type));
             table.put("name", JmxUtil.quoteValueIfRequired(name));
-            return whiteboard.register(iface, bean, ImmutableMap.of(
-                    "jmx.objectname",
-                    new ObjectName(JMX_OAK_DOMAIN, table)));
+
+            ImmutableMap.Builder properties = ImmutableMap.builder();
+            properties.put("jmx.objectname", new ObjectName(JMX_OAK_DOMAIN, table));
+            properties.putAll(attrs);
+
+            return whiteboard.register(iface, bean, properties.build());
         } catch (MalformedObjectNameException e) {
             throw new IllegalArgumentException(e);
         }
{noformat}

> RevisionGCMbeans are not filtered correctly in the RepositoryManagement
> -----------------------------------------------------------------------
>
>                 Key: OAK-6375
>                 URL: https://issues.apache.org/jira/browse/OAK-6375
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.7.3
>            Reporter: Tomek Rękawek
>            Assignee: Tomek Rękawek
>             Fix For: 1.8, 1.7.4
>
>
> The RepositoryManagement uses the new Whiteboard#track(Class,Map) method to get services with given role. When the OSGi implementation of the whiteboard is being used, the filter is transformed into OSGi filter expression. Particularly, the {{role}} property is being used to get the RevisionGCMBean of the right type.
> However, the RevisionGCMBean role is being set as a part of the {{jmx.objectname}} property, not a separate property. The {{jmx.objectname}} property has following form:
> {noformat}
> org.apache.jackrabbit.oak:name=Revision garbage collection - secondary,type=RevisionGarbageCollection,role=secondary
> {noformat}
> Because of that, an attempt to call the RepositoryManagement#startRevisionGC() method (or its parametrized version) fails.
> //cc: [~chetanm], [~mduerig]



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)