The issue is the generator tool relying on the doclet API that wtas removed
in JDK 11+ so to run the current generator we have to run the tool with JDK
8 at build time. We would need to re-write all that parsing with the new
API. https://openjdk.org/jeps/221 Unfortunately trying to update everything
to use the new api is going to be a lot of work I think

As an alternative, Tim reminded me he started work on an openwire generator
that is annotation based and lives here:
https://github.com/apache/activemq-openwire/tree/main

It would likely be a better idea to take over that project and update it as
needed as it looks like it still works but is a bit out of date.

On Tue, Dec 5, 2023 at 3:30 PM Matt Pavlovich <mattr...@gmail.com> wrote:

> Hey Chris-
>
> Thanks for taking the first pass in to the generator code.
>
> This got me thinking— Can we make a JDK and tools break to decouple the
> complexity that comes with dropping annogen AND trying to maintain JDK 8
> support?
>
> We leveled ActiveMQ v6.x to JDK 17— keeping JDK 8 (language) support is
> two JDK LTS jumps back, and going to be increasingly difficult to maintain
> language AND tooling+dependency support going forward. Not to mention,
> being able to leverage JDK 17 text blocks might be super handy =)
>
>
> Riffing here..
>
> 1. Create an activemq-openwire-jdk8 module (generate and ‘leave’ the
> classes and test code there — like you mentioned)
>
> 2. Modernize open wire-generator away from gram/groovy/annogen as needed,
> leverage text blocks where we can (license, headers, etc), and perhaps
> something like JavaPoet for java class generation.
>
> Thoughts?
>
> -Matt Pavlovich
>
> > On Dec 5, 2023, at 6:44 AM, Christopher Shannon <
> christopher.l.shan...@gmail.com> wrote:
> >
> > I started looking at the Openwire generator issues and the biggest
> problem
> > is the use of a super ancient library for things like javadoc parsing
> which
> > no longer works on JDK 11+ https://github.com/codehaus/annogen
> >
> > The entire doclet API was changed so we would need to update the openwire
> > generator to replace that library which would require a substantial
> rewrite
> > or we would need to fix that library. Based on what I am seeing I think
> > fixing the Openwire generator code might be a longer term task depending
> on
> > how bad the changes are.
> >
> > The generator should still work with JDK 8 so if it's going to take a
> long
> > time to fix we may need to generate a new Openwire version in an older
> 5.x
> > branch using JDK 8 and then just copy the generated code to the new
> > versions.
> >
> > On Mon, Dec 4, 2023 at 1:51 PM Matt Pavlovich <mattr...@gmail.com>
> wrote:
> >
> >> Hi Chris-
> >>
> >> My comments in-line below. For the most part, I agree in full. Any of
> the
> >> work that we can break up into minor or patch releases would be good
> from
> >> the standpoint of getting some runtime of all the changes under our belt
> >> before rolling out the major breaking change parts.
> >>
> >>> On Dec 4, 2023, at 6:57 AM, Christopher Shannon <
> >> christopher.l.shan...@gmail.com> wrote:
> >>>
> >>> We can have a roadmap and targets for things but the main thing I'm
> >> pushing
> >>> back on is having firm dates as there is a lot of unknown. There is a
> lot
> >>> of work left to do and it will take time to get things correct. We
> don't
> >>> want to have a rushed/bad implementation that is buggy.
> >>
> >> Agreed. I think getting the three other JMS 2.0 impl features are fairly
> >> straight-forward, and getting those out would allow them to bake-in a
> bit
> >> while we sort out Shared Durable Topic Subscription (SDTS) support.
> >>
> >>> For one thing, if we are going to add support for shared subscriptions
> >> and
> >>> shared durables we need an actual design to implement it as there's
> more
> >>> than one way it could be done.
> >>>
> >>> One approach I have been thinking about is the following and some of
> the
> >>> things off the top of my head that need to be done. There's probably a
> >> lot
> >>> more I'm not thinking of that would come up as working on it.
> >>>
> >>>  1. New openwire version that supports new commands for a shared topic
> >>>  consumer and shared durable consumer. We need to fix the openwire
> >> generator
> >>>  first and also fix the CVE in it for generated code.
> >>
> >> Agree. We need to clean-up openwire generator (and probably re-home
> >> kahadb-proto) for JDK, modernization and just ease of maintenance.
> >>
> >>>  2. Client changes to support the new commands and properly creating
> >>>  consumers
> >>
> >> Yep.
> >>
> >>>  3. Some way to map the shared subscriptions. As previously discussed,
> >>>  since shared subs can be implemented with queues, we can leverage the
> >> fact
> >>>  that the broker already supports Virtual topics and composite
> >> destinations.
> >>>  I think a good approach would be to have a new VT namespace that is
> >>>  dedicated just to shared subscriptions. When a user creates a shared
> >> sub
> >>>  with the new command we can then behind the scenes in the broker
> >> generate a
> >>>  virtual topic that maps to the new shared sub name and virtual topic
> >> queue
> >>>  using the namespace. Since it is a special namespace then on recovery
> >> we
> >>>  could detect the virtual topic is a shared subscription and recover
> >> things
> >>>  correctly.
> >>
> >> The subName+clientId may be stored in the ‘id’ field of the Virtual
> Topic—
> >> similar to how it’s done with the optional MQTT mapping. But yeah, a
> full
> >> deep-dive and analysis is warranted.
> >>
> >>>  4. We probably need to make some enhancements to virtual topic
> support.
> >>>  It may work out of the box bu I'm not sure. The good news is we
> >> shouldn't
> >>>  need any other special stuff in KahaDB or elsewhere in the code if we
> >> can
> >>>  just re-use Virtual topics.
> >>
> >> Yep, also— standardizing some of the Virtual Destination behaviors would
> >> be good. For example, Composite Queue/Topic doesn’t support the
> transaction
> >> fan-out when the ack mode is non-transacted.
> >>
> >>>  5. All of the rules in the spec need to be validated
> >>>  which will take work to get right. There are a lot of rules to enforce
> >> with
> >>>  the API that we will need to check broker side which is non trivial.
> >> For
> >>>  example, "A shared durable subscription and an unshared durable
> >>>  subscription may not have the same name and client identifier (if
> >> set). If
> >>>  an unshared durable subscription already exists with the same name and
> >>>  client identifier (if set) then a JMSRuntimeException is thrown."
> >>
> >> Also— network consumers always throw topics for a curve.
> >>
> >>>  6. We need to decide if other protocols will map as well...are we
> >>>  supporting MQTT/AMQP/STOMP ? If so, how are they going to map shared
> >> subs?
> >>
> >>
> >>>  7. We probably need new metrics/monitoring of things.
> >>
> >> Yes. +1
> >>
> >>>  8. We of course will need a lot of testing to verify all the new
> >>>  behavior works which will be a good amount of work.
> >>
> >> Yep.
> >>
> >> Thanks,
> >> Matt
> >>
> >>
> >>> On Mon, Dec 4, 2023 at 7:23 AM Jean-Baptiste Onofré <j...@nanthrax.net>
> >> wrote:
> >>>
> >>>> Ok. But in that case, can we target SMX 7 with full JMS 2 support ?
> >>>>
> >>>> I think it’s important to have a kind of roadmap.
> >>>>
> >>>> So let’s use 6.x for incremental work and 7 when complete (without
> >> strong
> >>>> commitment on date).
> >>>>
> >>>> Regards
> >>>> JB
> >>>>
> >>>> Le lun. 4 déc. 2023 à 13:18, Christopher Shannon <
> >>>> christopher.l.shan...@gmail.com> a écrit :
> >>>>
> >>>>> I don't see how we can release shared subscription support for 6.1.0
> at
> >>>>> this point. We haven't even come up with a plan of how we are going
> to
> >>>>> implement it. There's multiple ways it could be done and probably
> >>>> requires
> >>>>> protocol changes. We have to decide how much work is done by the
> broker
> >>>> and
> >>>>> where.
> >>>>>
> >>>>> On Mon, Dec 4, 2023 at 2:18 AM Jean-Baptiste Onofré <j...@nanthrax.net
> >
> >>>>> wrote:
> >>>>>
> >>>>>> I think it would better to complete JMS 2 in 6.1.0 including shared
> >>>> topic
> >>>>>> subscriptions.
> >>>>>> We already did 6.0.x with partial JMS 2 support, which is so so from
> >>>> user
> >>>>>> perspective.
> >>>>>>
> >>>>>> I would prefer to wait few weeks for 6.1.0 to give us time to
> complete
> >>>>> JMS
> >>>>>> 2.
> >>>>>>
> >>>>>> Regards
> >>>>>> JB
> >>>>>>
> >>>>>> Le lun. 4 déc. 2023 à 07:52, Matt Pavlovich <mattr...@gmail.com> a
> >>>>> écrit :
> >>>>>>
> >>>>>>> Hey JB --
> >>>>>>>
> >>>>>>> These JMS 2.0 features are planned for v6.1.0:
> >>>>>>>
> >>>>>>> AMQ-8464 PR #1046 6.1.0, 5.18.x  JMSConsumer .receiveBody(Class)
> >>>>> methods
> >>>>>>> AMQ-8320 PR #982   6.1.0, 5.18.x  Delivery Delay Support for
> Message
> >>>>>>> DeliveryDelay feature
> >>>>>>> AMQ-8324 PR #1045 6.1.0, 5.18.x  JMSProducer features Completion
> >>>>> Listener
> >>>>>>> async send support
> >>>>>>>
> >>>>>>> This would just leave Shared Topic Subscriptions, which is
> currently
> >>>>>>> planned for v6.2.0.
> >>>>>>>
> >>>>>>> AMQ-8323  6.2.0, 5.18.x  Shared Topic Consumer Multi-consumer
> >>>>>> (queue-like)
> >>>>>>> consuming from topic subscriptions
> >>>>>>>
> >>>>>>> Reference:
> >>>>>>> https://activemq.apache.org/jms2
> >>>>>>>
> >>>>>>> I think this would work well, since we have Virtual Topic support
> >>>>> (which
> >>>>>>> is better anyway).
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Matt
> >>>>>>>
> >>>>>>>
> >>>>>>>> On Dec 2, 2023, at 11:00 PM, Jean-Baptiste Onofré <
> j...@nanthrax.net
> >>>>>
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>> Hi
> >>>>>>>>
> >>>>>>>> I think it's really important to focus on JMS 2 complete impl for
> >>>>>> 6.1.0.
> >>>>>>>> That's the most important.
> >>>>>>>>
> >>>>>>>> I started to work on some impl, a couple are a little longer to
> >>>> impl,
> >>>>>>>> require tests etc.
> >>>>>>>> I don't think early January is reasonable. I would rather try at
> >>>> the
> >>>>>>>> end of January.
> >>>>>>>>
> >>>>>>>> I would rather:
> >>>>>>>> 1. Focus on 6.0.2 for fixes (I'm preparing 5.18.x/5.17.x too as
> >>>> they
> >>>>>>>> include fixes as well)
> >>>>>>>> 2. Focus on 6.1.0 to complete JMS 2.x support. That's probably the
> >>>>>>>> most important (honestly, I'm not a big fan of JMS 2.x support in
> >>>>>>>> ActiveMQ 6.0.x, it could be confusing for users).
> >>>>>>>>
> >>>>>>>> Regards
> >>>>>>>> JB
> >>>>>>>>
> >>>>>>>> On Sat, Dec 2, 2023 at 4:10 PM Matt Pavlovich <mattr...@gmail.com
> >
> >>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> All-
> >>>>>>>>>
> >>>>>>>>> I’ve started organizing some JIRAs for v6.1.0. I’m thinking
> >>>>>>> early-January for release target timeframe.
> >>>>>>>>>
> >>>>>>>>> - Additional JMS 2.0 impls
> >>>>>>>>> - New features for observability
> >>>>>>>>> - Code base modernization
> >>>>>>>>>
> >>>>>>>>> Thanks!
> >>>>>>>>> Matt Pavlovich
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>
> >>
>
>

Reply via email to