Lukasz,

I've do some investigation of related activities of the
`split-package` issue mentioned above. All the issues related to
moving issued packages I've marked with the 'ignite-osgi' label [1].
Hopefully, all such packages will be moved soon.

Another question that concerns me - are there any best practices exist
to prevent such an issue in future? Should we configure the checkstyle
rules or something else?

[1] https://issues.apache.org/jira/issues/?jql=labels%20%3D%20ignite-osgi

On Mon, 11 Jul 2022 at 21:03, Łukasz Dywicki <l...@code-house.org> wrote:
>
> Hello Maxim,
> My replies inline
>
> On 11.07.2022 15:57, Maxim Muzafarov wrote:
> > Hello Łukasz,
> >
> >
> >> One of major problems which are hard to solve without cooperation is 
> >> mentioned "split package" which is currently found in the sources.
> >
> > Can you clarify details of what is the issue of having such a case? I
> > my understanding it will be better to consider ignite-core +
> > ignite-indexing + ignite-calcite as a single feature. Thus having a
> > "split package" issue should not be a problem. It will be a quite
> > challenging to keep these modules thruly without package duplication
> > in future.
>
> Split package happens when same package is defined by more than one
> module. In such situation OSGi framework will stick with first provider
> of a given package (ie. ignite-core), simply ignoring subsequent code
> chunks provided by other modules (think of ignite-indexing).
> Because OSGi validate wiring at a package level, it has some impact on
> how code should be structured. Simply speaking module can not import a
> foreign package and export it with additional contents. I attempted to
> duplicate some of split package contents within ignite-indexing but it
> should be seen as a temporary workaround.
>
> > I've also briefly looked at the integration with the Apache Karaf.
> > Will it be possible to remove a module dependencies from the
> > feature-file [4]? It seems it's a bit complicated to maintain these
> > dependencies and corresponding versions each time some module changed.
> These dependencies are recommended as it will force proper build order
> of modules. Without it you may end up with a situation that feature
> validation involving ignite-core will be made before before ignite-core
> is being built locally. Relying on sequence order of <module> elements
> in reactor pom is often insufficient to assure that.
>
> > The issue IGNITE-17046 [1] you mentioned above was merged. I've also
> > moved the OSGi sub-modules to the Apache Ignite Extensions project
> > [2], so I hope we can proceed here. Please, note that I've removed the
> > ignite-paxloggin module due to it is completely out of date. The
> > ignite-log4j will be removed very soon [3], so we have to migrate
> > everything to the ignite-log4j2.
> Fair enough, I can take it forward from that place and try to come with
> a clear Karaf feature set also for some of ignite extensions. I noticed
> some of them were refereed.
>
> > I've also take a look at the packages you mentioned above. Here is the
> > list of packages with my comments:
> >
> > org.apache.ignite.internal.managers.systemview.walker
> > (will be moved soon from ignite-indexing to the ignite-core)
> >
> > org.apache.ignite.internal.mxbean
> > (ignite-indexing - classes deprecated and will be removed here [5])
> >
> > org.apache.ignite.internal.processors.cache.query
> > (ignite-indexing - I doubt it can be simply removed currently,
> > refactoring is required)
> >
> > org.apache.ignite.internal.processors.query.stat
> > (ignite-indexing - I doubt we can do anything here)
> >
> > org.apache.ignite.internal.visor.cache.index
> > (ignite-indexing - we can simply move everything to the ignite-core)
> >
> > org.apache.ignite.internal.visor.verify
> > (ignite-indexing - we can simply move everything to the ignite-core)
> >
> > org.apache.ignite.internal.managers.systemview
> > (will be moved soon from ignite-indexing to the ignite-core)
>
> I understand that moving code is difficult and causes a friction to
> dependent projects, so easiest path is moving dependencies up (to
> ignite-core), making it even bigger.
> We do not need a full functinality re-factoring to satisfy "singularity"
> of a package. It is sufficient to have unique name for package
> structure. For example:
> org.apache.ignite.internal.processors.cache.query in indexing could be:
> - org.apache.ignite.internal.processors.cache.indexing.query
> - org.apache.ignite.indexing.internal.processors.cache.query
> or similar.
>
> Best,
> Łukasz
>
> > [1] https://issues.apache.org/jira/browse/IGNITE-17046
> > [2] https://issues.apache.org/jira/browse/IGNITE-13570
> > [3] https://issues.apache.org/jira/browse/IGNITE-16650
> > [4] 
> > https://github.com/apache/ignite-extensions/blob/master/modules/osgi-ext/osgi-karaf/src/main/resources/features.xml#L131
> > [5] https://issues.apache.org/jira/browse/IGNITE-15761
> >
> > On Mon, 4 Jul 2022 at 21:42, Łukasz Dywicki <l...@code-house.org> wrote:
> >>
> >> Hello Maxim,
> >> Thank you for your answer. I haven't expected such quick feedback. I am
> >> here to help you with OSGi, I believe that together we will be able to
> >> get Ignite free of troubles it gives.
> >>
> >> I abstained from creating new issues as there are two which already
> >> outline end user problem: IGNITE-17216, IGNITE-17216.
> >>
> >> I do not see a problem with moving ignite-osgi module to other
> >> repository as long as we avoid dependency cycles.
> >> Since igite-osgi functionality seem to be limited to bootstrapping
> >> ignite and its classloading it does not depend per say on where code
> >> itself is located. I suppose that osgi-karaf and osgi-paxlogging should
> >> follow that move to keep all osgi related things in one place.
> >>
> >> Major concern I can raise is how to keep it up so it does not sink over
> >> time. Integration tests I mentioned will form a safety net, but they
> >> need to be part of build pipeline to follow changes in main repository.
> >> Some of recent changes I found about cleaning out some inner-dependency
> >> paths (ie. indexing-h2 relation: IGNITE-17046), are very helpful  to
> >> solidify OSGi metadata.
> >> One of major problems which are hard to solve without cooperation is
> >> mentioned "split package" which is currently found in the sources. This
> >> happens when same package is defined (and exported) from two places.
> >> Currently both ignite-core and indexing bring contents of
> >> org.apache.ignite.internal and spi packages:
> >> - org.apache.ignite.internal.managers.systemview.walker
> >> - org.apache.ignite.internal.mxbean
> >> - org.apache.ignite.internal.processors.cache.query
> >> - org.apache.ignite.internal.processors.query.stat
> >> - org.apache.ignite.internal.visor.cache.index
> >> - org.apache.ignite.internal.visor.verify
> >> - org.apache.ignite.spi.systemview.view
> >> To be fair, I don't know yet what is scope of these and that's where I
> >> need most of your guidance. I don't think we will be able to stabilize
> >> osgi integration to guarantee it will work reliably if these stay.
> >>
> >> Kind regards,
> >> Łukasz
> >>
> >> On 4.07.2022 19:43, Maxim Muzafarov wrote:
> >>> Hello Łukasz,
> >>>
> >>> Nice to meet you!
> >>>
> >>> Currently there are some known issues with the Apache Ignite OSGi
> >>> integration. We have a lack of time and knowledg to support it, so any
> >>> help are very appreciated. I also have a a plan to move this
> >>> integration to the Apache Ignite Extensions project [1] and release it
> >>> when all the issues are resolved. Here is an umbrella ticket for it
> >>> [2].
> >>>
> >>> What do you think if I move the OSGi to the Apache Ignite Extensions
> >>> first and after it we will resolve the issue you mentioned above? I
> >>> can help with a review and try to do the best I can here.
> >>> Anyway if this plan wouldn't work for you, please, feel free to create
> >>> an issue here [3] with your PR.
> >>>
> >>>
> >>> [1] https://github.com/apache/ignite-extensions
> >>> [2] https://issues.apache.org/jira/browse/IGNITE-17019
> >>> [3] https://issues.apache.org/jira/projects/IGNITE/
> >>>
> >>> On Mon, 4 Jul 2022 at 20:26, Łukasz Dywicki <l...@code-house.org> wrote:
> >>>>
> >>>>
> >>>> Hello everyone,
> >>>> First of all thank you for awesome project and its maintenance. My name
> >>>> is Łukasz and I am committer of Apache Karaf and Apache PLC4X projects
> >>>> hence you most likely don't know me as I am coming from other part of
> >>>> ASF ecosystem.
> >>>>
> >>>> I was asked about looking at Apache Ignite OSGi metadata as project we
> >>>> are trying to use Ignite with is bound to the OSGi runtime. After a bit
> >>>> of look I found that metadata generation is partial and overall
> >>>> infrastructure in this area haven't received any polishing since a while.
> >>>> Since there are "split packages" and few additional troubles I wanted to
> >>>> check with you if there is a will to move that part ahead. Is there a
> >>>> will or plan to retain the metadata or rather throw it away?
> >>>>
> >>>> Last week I made a draft PR with changes which allowed me to run ignite
> >>>> inside Apache Karaf (4.3.x): https://github.com/apache/ignite/pull/10133
> >>>> There are several maven pom updates and, so far, one code relocation in
> >>>> kubernetes module. I based all changes on exiting properties:
> >>>> osgi.import.package, osgi.export.package, osgi.private.package
> >>>> I think there are few more places where "split package" is found,
> >>>> however I did not look very carefully at these yet.
> >>>>
> >>>> Looking forward to hear out your guidance in how you would like to get
> >>>> these changes, if at all. If you would be up to move that part forward I
> >>>> can sacrifice more time in making metadata generation and validation
> >>>> more rebust through ie. basic OSGi integration tests. PR I linked above
> >>>> automatically validates import and export constraints for Karaf feautes.
> >>>>
> >>>> Kind regards,
> >>>> Łukasz

Reply via email to