Details

      Description

      Now that all declarative services in IGB has been migrated to osgi.annotations as of IGBF-3414, the next step to migrate the project J11 requires maven-bundleplugin to be updated.

        Attachments

          Issue Links

            Activity

            Hide
            karthik Karthik Raveendran added a comment -

            Updating maven-bundle-plugin from version 3.0.0 to version 4.0.0 (latest update being 5.1.9, Mar 2023), bundles with <Service-Component>*<Service-Component> in the pom file required that this line to be removed because using * has deprecated. However, updating it to 4.2.1 has no problems except for runtime issues same as updating to 5.1.9. These errors seem to becaused by an unresolved requirement of osgi.component in genometry.

            Show
            karthik Karthik Raveendran added a comment - Updating maven-bundle-plugin from version 3.0.0 to version 4.0.0 (latest update being 5.1.9, Mar 2023), bundles with <Service-Component>*<Service-Component> in the pom file required that this line to be removed because using * has deprecated. However, updating it to 4.2.1 has no problems except for runtime issues same as updating to 5.1.9. These errors seem to becaused by an unresolved requirement of osgi.component in genometry.
            Hide
            nfreese Nowlan Freese added a comment -

            The main issue seems to be a requirement for osgi.extender=osgi.component)(&(version>=1.5.0). The osgi.extender=osgi.component is provided by org.apache.felix.scr, however, only the more recent versions of org.apache.felix.scr provide osgi.extender=osgi.component version of 1.5 (our current version provides 1.3). However, the more recent version of org.apache.felix.scr requires org.osgi.framework. Adding org.osgi.framework then causes a dependency chain issue because org.apache.felix.main also provides framework.

            At this time we are currently pursuing multiple options for resolving this issue. What is odd to me is that maven-bundle-plugin shouldn't have this requirement for osgi.extender=osgi.component, as we can update maven-bundle-plugin to the newest version in an app (protannot for example) without any issues, and it runs in IGB.

            Show
            nfreese Nowlan Freese added a comment - The main issue seems to be a requirement for osgi.extender=osgi.component)(&(version>=1.5.0). The osgi.extender=osgi.component is provided by org.apache.felix.scr, however, only the more recent versions of org.apache.felix.scr provide osgi.extender=osgi.component version of 1.5 (our current version provides 1.3). However, the more recent version of org.apache.felix.scr requires org.osgi.framework. Adding org.osgi.framework then causes a dependency chain issue because org.apache.felix.main also provides framework. At this time we are currently pursuing multiple options for resolving this issue. What is odd to me is that maven-bundle-plugin shouldn't have this requirement for osgi.extender=osgi.component, as we can update maven-bundle-plugin to the newest version in an app (protannot for example) without any issues, and it runs in IGB.
            Hide
            nfreese Nowlan Freese added a comment - - edited

            In the modules that are not active, this is what I am seeing in the manifest (from the felix console):

            Manifest-Version: 1.0
            Provide-Capability: osgi.service; objectClass:List<String>="com.affymetrix.igb.external.UCSCViewAction, org.lorainelab.igb.menu.api.MenuBarEntryProvider", osgi.service; objectClass:List<String>="org.lorainelab.igb.services.window.tabs.IgbTabPanelI"
            Require-Capability: osgi.extender; filter:="(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))", osgi.service; filter:="(objectClass=com.affymetrix.igb.external.UCSCViewAction)"; effective:=active, osgi.service; filter:="(objectClass=org.lorainelab.igb.menu.api.MenuItemEventService)"; effective:=active, osgi.service; filter:="(objectClass=org.lorainelab.igb.services.IgbService)"; effective:=active, osgi.service; filter:="(objectClass=org.lorainelab.igb.synonymlookup.services.GenomeVersionSynonymLookup)"; effective:=active, osgi.extender; filter:="(&(osgi.extender=osgi.component)(&(version>=1.5.0)(!(version>=2.0.0))))", osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.8))"
            

            Note that the osgi.extender=osgi.component is appearing twice, one with a required version of 1.3.0 and one with 1.5.0. This is the same in all of the modules I have looked at that are not loading when attempting to run IGB. I'm not sure why this requirement is appearing due to changing the maven-bundle-plugin from version 3.5.1 to 4.0.0.

            Compare this to the manifest from a working version of IGB:

            Capability "osgi.extender" with directives filter=(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0))) (provided by org.apache.felix.scr (61))
            Capability "osgi.ee" with directives filter=(&(osgi.ee=JavaSE)(version=1.8)) (provided by org.apache.felix.framework (0))
            
            Show
            nfreese Nowlan Freese added a comment - - edited In the modules that are not active, this is what I am seeing in the manifest (from the felix console): Manifest-Version: 1.0 Provide-Capability: osgi.service; objectClass:List< String >= "com.affymetrix.igb.external.UCSCViewAction, org.lorainelab.igb.menu.api.MenuBarEntryProvider" , osgi.service; objectClass:List< String >= "org.lorainelab.igb.services.window.tabs.IgbTabPanelI" Require-Capability: osgi.extender; filter:= "(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))" , osgi.service; filter:= "(objectClass=com.affymetrix.igb.external.UCSCViewAction)" ; effective:=active, osgi.service; filter:= "(objectClass=org.lorainelab.igb.menu.api.MenuItemEventService)" ; effective:=active, osgi.service; filter:= "(objectClass=org.lorainelab.igb.services.IgbService)" ; effective:=active, osgi.service; filter:= "(objectClass=org.lorainelab.igb.synonymlookup.services.GenomeVersionSynonymLookup)" ; effective:=active, osgi.extender; filter:= "(&(osgi.extender=osgi.component)(&(version>=1.5.0)(!(version>=2.0.0))))" , osgi.ee; filter:= "(&(osgi.ee=JavaSE)(version=1.8))" Note that the osgi.extender=osgi.component is appearing twice, one with a required version of 1.3.0 and one with 1.5.0. This is the same in all of the modules I have looked at that are not loading when attempting to run IGB. I'm not sure why this requirement is appearing due to changing the maven-bundle-plugin from version 3.5.1 to 4.0.0. Compare this to the manifest from a working version of IGB: Capability "osgi.extender" with directives filter=(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0))) (provided by org.apache.felix.scr (61)) Capability "osgi.ee" with directives filter=(&(osgi.ee=JavaSE)(version=1.8)) (provided by org.apache.felix.framework (0))
            Show
            nfreese Nowlan Freese added a comment - https://github.com/Netcentric/accesscontroltool/issues/433
            Hide
            nfreese Nowlan Freese added a comment - - edited

            Downgrading org.osgi.service.component.annotations to version 1.3 and setting the scope to provided resolves the issue. Versions greater than 1.4 are breaking the declarative services for some reason (note that versions greater than 1.4 are not compile time only). Can now upgrade maven-bundle-plugin to 5.1.9. Not sure how to resolve issue with newer versions of org.osgi.service.component.annotations at this time.

            Show
            nfreese Nowlan Freese added a comment - - edited Downgrading org.osgi.service.component.annotations to version 1.3 and setting the scope to provided resolves the issue. Versions greater than 1.4 are breaking the declarative services for some reason (note that versions greater than 1.4 are not compile time only). Can now upgrade maven-bundle-plugin to 5.1.9. Not sure how to resolve issue with newer versions of org.osgi.service.component.annotations at this time.
            Show
            nfreese Nowlan Freese added a comment - Branch: https://bitbucket.org/nfreese/nowlanfork-igb/branch/IGBF-3431
            Hide
            nfreese Nowlan Freese added a comment - - edited

            I have rebased 3431 onto main-JDK8 for testing. I can find no issues when running my branch through the jar file, all bundles are listed as active in the felix web console. However, when I run the branch through the debugger in Netbeans, the org.osgi.service.component.annotations bundle is listed as installed. Version 1.3 of org.osgi.service.component.annotations must be set to provided (possibly also compile) as it cannot be set to runtime. This may be what is causing the bundle to be listed as installed in debug mode, but I am not sure. However, I have been using debug mode extensively, and have come across no issues. Apps install and run normally, and all other IGB functionality appears to be working.

            I suggest that we merge IGBF-3431 with main-JDK8-r6. It may be possible to resolve/fix the issue with version 1.3 of org.osgi.service.component.annotations in the future, but at this time everything in IGB appears to be working, and this will allow us to proceed with the Java 11 work.

            Show
            nfreese Nowlan Freese added a comment - - edited I have rebased 3431 onto main-JDK8 for testing. I can find no issues when running my branch through the jar file, all bundles are listed as active in the felix web console. However, when I run the branch through the debugger in Netbeans, the org.osgi.service.component.annotations bundle is listed as installed. Version 1.3 of org.osgi.service.component.annotations must be set to provided (possibly also compile) as it cannot be set to runtime. This may be what is causing the bundle to be listed as installed in debug mode, but I am not sure. However, I have been using debug mode extensively, and have come across no issues. Apps install and run normally, and all other IGB functionality appears to be working. I suggest that we merge IGBF-3431 with main-JDK8-r6. It may be possible to resolve/fix the issue with version 1.3 of org.osgi.service.component.annotations in the future, but at this time everything in IGB appears to be working, and this will allow us to proceed with the Java 11 work.
            Hide
            karthik Karthik Raveendran added a comment -

            After including these changes in main-JDK8-r6, I tested it with no errors.

            Show
            karthik Karthik Raveendran added a comment - After including these changes in main-JDK8-r6, I tested it with no errors.
            Show
            nfreese Nowlan Freese added a comment - [~aloraine] - Pull request: https://bitbucket.org/lorainelab/integrated-genome-browser/pull-requests/949
            Hide
            nfreese Nowlan Freese added a comment -

            Tested using main-JDK8.dmg installer on Mac. IGB installed and ran correctly.

            Closing ticket.

            Show
            nfreese Nowlan Freese added a comment - Tested using main-JDK8.dmg installer on Mac. IGB installed and ran correctly. Closing ticket.

              People

              • Assignee:
                karthik Karthik Raveendran
                Reporter:
                karthik Karthik Raveendran
              • Votes:
                1 Vote for this issue
                Watchers:
                Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: