The @JsonProperty annotations are added because it's a dependency in SolrJ as well If SolrJ has a Jackson dependency, it can have a conflict (different versions) with the Jackson used by the client app.
On Tue, Nov 30, 2021, 5:21 PM Noble Paul <noble.p...@gmail.com> wrote: > Also keep in mind that the same endpoint can be accessed with a core name > and a collection name prefixes. > > On Tue, Nov 30, 2021 at 3:55 PM Noble Paul <noble.p...@gmail.com> wrote: > >> True Gus, Almost every framework works outside of SolrDispatchFilter+ >> HttpSolrCall. A lot of our initializations occur there. >> >> We need to make an API work on a per core basis and cores can come up and >> go down randomly. So we need to register these endpoints on a core. >> >> I'm not sure if any framework can achieve the same. >> >> On Tue, Nov 30, 2021 at 5:39 AM Gus Heck <gus.h...@gmail.com> wrote: >> >>> IIRC last time I looked restlet had the unsavory property of existing >>> outside of the SolrDispatchFilter, unlike everything else which made for >>> special cases because several things that probably ought to be their own >>> siervlet filters are glommed into SolrDispatchFilter, like security, >>> tracing and MDC setup/teardown per request. Restlet wouldn't be so bad if >>> one could just wrap such filters around it too... >>> >>> On Mon, Nov 29, 2021 at 9:42 AM Jason Gerlowski <gerlowsk...@gmail.com> >>> wrote: >>> >>>> > These are minor improvements compared to a full rewrite of the entire >>>> framework >>>> >>>> If you think data type support is minor, fair enough. But to clarify >>>> I'm not suggesting a rewrite - I'm suggesting using something that >>>> already exists off the shelf. Jersey (e.g.) itself provides the >>>> framework - there would be no "rewrite". >>>> >>>> re: past restlet use >>>> >>>> > It was not playing well with our security framework. The framework >>>> was not working well with Solr APIs >>>> >>>> Ah, very interesting! Security isn't something Eric or I tackled in >>>> our little spike branch, but it's definitely a concern. Do you >>>> remember the specific concerns? Or recall where any of the discussion >>>> around this happened? >>>> >>>> Without the context of that past discussion, it seems like the >>>> "PermissionNameProvider" interface could be implemented just as well >>>> by a class with (e.g.) Jersey annotations as one with our own custom >>>> annotations. Certainly there'd need to be some >>>> RuleBasedAuthorizationPlugin changes or other integration code, but >>>> nothing that feels insurmountable. >>>> >>>> Maybe I can try spiking it out soon and find the issues myself, but >>>> it'd be much easier if someone happens to remember and can save me the >>>> trouble :-p >>>> >>>> Best, >>>> >>>> Jason >>>> >>>> On Fri, Nov 26, 2021 at 12:05 AM Noble Paul <noble.p...@gmail.com> >>>> wrote: >>>> > >>>> > The Annotations framework was written after playing with other >>>> frameworks. There were many shortcomings which were hard to overcome. >>>> > >>>> > The best example is a per collection API . How do you register an >>>> endpoint for a collection/core ? >>>> > >>>> > On Fri, Nov 26, 2021 at 3:42 PM Noble Paul <noble.p...@gmail.com> >>>> wrote: >>>> >> >>>> >> >>>> >> >>>> >> On Fri, Nov 26, 2021 at 1:03 AM Jason Gerlowski < >>>> gerlowsk...@gmail.com> wrote: >>>> >>> >>>> >>> > Is there some problem with our annotations that we hope to solve >>>> using third party dependencies? >>>> >>> >>>> >>> I guess so yeah. Third-party deps are just fuller, more robust >>>> >>> solutions, whereas our annotations still need support added now and >>>> >>> then for even primitive data types like "long" (see SOLR-15619). >>>> >> >>>> >> These are minor improvements compared to a full rewrite of the >>>> entire framework >>>> >> >>>> >> >>>> >>> >>>> >>> Every JIRA spent doing basic stuff like that is time away from >>>> >>> improving Solr in some other way. >>>> >>> >>>> >>> So there are feature-gap/capabilities arguments for moving to a >>>> >>> third-party dep, sure. But, even if our annotations did everything >>>> >>> Jersey+Jackson do today, I think switching would still be worth it. >>>> >>> Every LOC in our code base brings along with it some maintenance >>>> cost: >>>> >>> it might have bugs, needs tested, takes time for new contributors to >>>> >>> "grok", etc. Using off-the-shelf here would nuke a whole bunch of >>>> >>> that. If off-the-shelf is available for some given functionality, >>>> we >>>> >>> should need a compelling reason to NOT use it. >>>> >>> >>>> >>> Lastly, I think there's an "approachability" argument for using >>>> >>> off-the-shelf. Thousands of developers out there are familiar with >>>> >>> (e.g.) Jersey, compared to maybe 15 or 20 (in the world) familiar >>>> with >>>> >>> Solr's custom annotations. Using a well-known technology like >>>> Jersey >>>> >>> would make Solr all the easier to approach and contribute to for >>>> that >>>> >>> pool of developers. >>>> >>> >>>> >>> > By the way, we have used Restlet in the past and that has been a >>>> regrettable decision. >>>> >> >>>> >> >>>> >>> >>>> >>> Ah, yeah, that's just the context I'm missing. Anyone have a >>>> pointer >>>> >>> to related discussions, or remember what made this "regrettable"? >>>> All >>>> >>> the theoretical benefits in the world don't matter much if we've >>>> >>> already tried something like this in the past and decided against >>>> it. >>>> >> >>>> >> >>>> >> It was not playing well with our security framework. The framework >>>> was not working well with Solr APIs >>>> >> >>>> >>> >>>> >>> (Unrelated - Happy Thanksgiving all!) >>>> >>> >>>> >>> Best, >>>> >>> >>>> >>> Jason >>>> >>> >>>> >>> On Thu, Nov 25, 2021 at 7:32 AM Noble Paul <noble.p...@gmail.com> >>>> wrote: >>>> >>> > >>>> >>> > Have you gone through an API written using the @EndPoint >>>> annotation? >>>> >>> > >>>> >>> > I strongly recommend that you do >>>> >>> > >>>> >>> > On Thu, Nov 25, 2021, 11:30 PM Eric Pugh < >>>> ep...@opensourceconnections.com> wrote: >>>> >>> >> >>>> >>> >> I have found our V2 API code to be very impenetrable to >>>> understand. Part of it is how the code is intertwined with support for >>>> V1, however it’s also because there aren’t really resources to go look at >>>> to understand how it should work! Maintaining the API should be very >>>> simple work, as they just exist as a translation. The home grown stuff >>>> may make sense if you are a super knowledgable Solr developer, but if you >>>> are just a new person, it’s a lot harder to contribute. >>>> >>> >> >>>> >>> >> I was interested in the Jersey stuff because I’ve seen lots of >>>> projects use it very successfully, and if I want to implement something, >>>> well, there are lots of blogs and resources out there! >>>> >>> >> >>>> >>> >> Can anyone recap briefly why we dropped RESTlet? And what >>>> lessons learned there might apply to adopting Jersey for API support? >>>> Looking at https://issues.apache.org/jira/browse/SOLR-14659, it was >>>> partly deprecated because we were not using it to support all the API, only >>>> the ManagedResource ones, and >>>> https://issues.apache.org/jira/browse/SOLR-14766 suggests that RESTlet >>>> maybe was no longer being updated? One reason why we spiked out Jersey >>>> was because of the broad support in the Java world! Looking at how much >>>> work we have to do in the V2 API world, we need a much broader pool of >>>> developers contributing to get there! >>>> >>> >> >>>> >>> >> Related, are there specific features/aspects of our annotations >>>> that enable things in Solr that couldn’t be done otherwise? >>>> >>> >> >>>> >>> >> On Nov 25, 2021, at 2:12 AM, Ishan Chattopadhyaya < >>>> ichattopadhy...@gmail.com> wrote: >>>> >>> >> >>>> >>> >> Is there some problem with our annotations that we hope to solve >>>> using third party dependencies? >>>> >>> >> By the way, we have used Restlet in the past and that has been a >>>> regrettable decision. >>>> >>> >> >>>> >>> >> On Thu, Nov 25, 2021 at 10:10 AM Jason Gerlowski < >>>> gerlowsk...@gmail.com> wrote: >>>> >>> >>> >>>> >>> >>> Solr's custom annotation framework ('@Endpoint', '@Command', >>>> etc.) has >>>> >>> >>> cropped up a few times over the past week or two. [1] [2]. >>>> Having them >>>> >>> >>> on top of mind, I've been wondering - is there a reason we use >>>> our own >>>> >>> >>> annotations here instead of something off the shelf? >>>> >>> >>> >>>> >>> >>> What we have works well enough, but anything homegrown comes >>>> with more >>>> >>> >>> maintenance burden than we'd have if we used something off the >>>> shelf. >>>> >>> >>> There are plenty of well-used, active projects out there whose >>>> whole >>>> >>> >>> purpose is facilitating the whole "annotation based API" thing >>>> >>> >>> (Jersey, Restlet, RESTEasy, etc.) - why not use one of them? >>>> >>> >>> >>>> >>> >>> Does anyone know of any technical reasons why we can't go this >>>> route? >>>> >>> >>> Or have any subjective reasons why we shouldn't? Or any >>>> context on >>>> >>> >>> why we wrote our own Endpoint, Command, JsonProperty annotations >>>> >>> >>> originally? >>>> >>> >>> >>>> >>> >>> FWIW, Eric Pugh and I spiked out a small POC recently, and got >>>> >>> >>> Jersey+Jackson working for a few simple APIs without too much >>>> trouble. >>>> >>> >>> [3] Obviously nothing production-ready there, and there's >>>> still a lot >>>> >>> >>> of open questions (e.g. how would javabin be supported?), but >>>> we both >>>> >>> >>> came away convinced that it seemed feasible, at least. Best of >>>> all, >>>> >>> >>> APIs using our current homegrown annotation framework the >>>> switchover >>>> >>> >>> seems blessedly straightforward, and it doesn't look like Jersey >>>> >>> >>> (which we chose mostly arbitrarily) bloats our dist all that >>>> much. >>>> >>> >>> >>>> >>> >>> Curious if anyone has thoughts or context on how we ended up >>>> with the >>>> >>> >>> annotation setup we use today! >>>> >>> >>> >>>> >>> >>> Best, >>>> >>> >>> >>>> >>> >>> Jason >>>> >>> >>> >>>> >>> >>> [1] https://issues.apache.org/jira/browse/SOLR-15182 (and >>>> children) >>>> >>> >>> [2] >>>> http://mail-archives.apache.org/mod_mbox/solr-dev/202111.mbox/%3CCABEwPvENL41Pm6%2BOmjXb6Sx5N2XjUtnbWhgKOZSrnLjWBA8tcA%40mail.gmail.com%3E >>>> >>> >>> [3] >>>> https://github.com/gerlowskija/solr/tree/jersey_jaxrs_jackson_solr_apis >>>> . >>>> >>> >>> >>>> >>> >>> >>>> --------------------------------------------------------------------- >>>> >>> >>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org >>>> >>> >>> For additional commands, e-mail: dev-h...@solr.apache.org >>>> >>> >>> >>>> >>> >> >>>> >>> >> _______________________ >>>> >>> >> Eric Pugh | Founder & CEO | OpenSource Connections, LLC | >>>> 434.466.1467 | http://www.opensourceconnections.com | My Free/Busy >>>> >>> >> Co-Author: Apache Solr Enterprise Search Server, 3rd Ed >>>> >>> >> This e-mail and all contents, including attachments, is >>>> considered to be Company Confidential unless explicitly stated otherwise, >>>> regardless of whether attachments are marked as such. >>>> >>> >> >>>> >>> >>>> >>> >>>> --------------------------------------------------------------------- >>>> >>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org >>>> >>> For additional commands, e-mail: dev-h...@solr.apache.org >>>> >>> >>>> >> >>>> >> >>>> >> -- >>>> >> ----------------------------------------------------- >>>> >> Noble Paul >>>> > >>>> > >>>> > >>>> > -- >>>> > ----------------------------------------------------- >>>> > Noble Paul >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org >>>> For additional commands, e-mail: dev-h...@solr.apache.org >>>> >>>> >>> >>> -- >>> http://www.needhamsoftware.com (work) >>> http://www.the111shift.com (play) >>> >> >> >> -- >> ----------------------------------------------------- >> Noble Paul >> > > > -- > ----------------------------------------------------- > Noble Paul >