On Tue, Nov 30, 2021 at 8:44 PM Jason Gerlowski <gerlowsk...@gmail.com> wrote:
> > We need to make an API work on a per core basis and cores can come up > and go down randomly > > Ah, yeah. I'll admit I was overlooking some of the wrinkles around > custom request handlers etc. That is a problem for switching to some > off-the-shelf framework for sure. It may still be possible, but it's > definitely a big hurdle. I wonder how commonly users still take > advantage of the custom requestHandler stuff these days? Here's YASA using annotations: https://github.com/yasa-org/yasa/blob/master/yasa-solr-plugin/src/main/java/io/github/kezhenxu94/YasaHandler.java#L45 > I haven't > run across many customers who used them extensively, but maybe that's > self-selecting in some way? > > > If SolrJ has a Jackson dependency, it can have a conflict (different > versions) with the Jackson used by the client app > > SolrJ has a handful of dependencies - is there a reason we take this > approach with Jackson, but not with any of SolrJ's other deps? > (apache-httpcomponents, apache-commons, zookeeper-client, etc.) > > Granted, I get that we want SolrJ to be as painless as possible for > its users, and jar-conflicts are a part of that and really suck. But > there are good tools out there for handling jar conflicts, and > reimplementing chunks of library functionality just to avoid a > gradle-dep strikes me as unsustainable from a maintenance/community > perspective. Not to mention that forking/mimicking Jackson code > deprives our users of any efficiency/security improvements that > Jackson might get tomorrow or next week or next year. > > Unless there's some reason specific to Jackson I guess I just don't > get it. But if I'm the minority opinion on that, fair enough I guess. > > On Tue, Nov 30, 2021 at 5:05 AM Noble Paul <noble.p...@gmail.com> wrote: > > > > 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 > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org > For additional commands, e-mail: dev-h...@solr.apache.org > >