I do not deny that a standardized framework may be helpful. I'm already suffering from the PTSD of restlet integration. The integration code was extremely complex and a security nightmare.It was added without any perf tests too. It took many years to get rid of that
On Fri, Dec 3, 2021 at 1:37 AM Jason Gerlowski <gerlowsk...@gmail.com> wrote: > > 99% of Solr users never see the java code that implements an API let > alone writing a new API. > > We may be talking past each other here a bit Noble. The JAX-RS > benefits I've been trying to describe are to benefit us developers, > not Solr users. I agree that 99% of our users won't know or care > about it, but who cares. The goal is to make _our_ lives as > maintainers easier going into the future. Jan described it in a word > better than I've been struggling to: it's about "modernization". > > Best, > > Jason > > On Thu, Dec 2, 2021 at 3:34 AM Jan Høydahl <jan....@cominvent.com> wrote: > > > > Agree, Ishan. > > > > Let's welcome and cheer initiatives to modernize this old codebase. > > Diving in deep and un-tangling DispatchFilter like Gus is attempting is > brave. > > And testing JAX-RS to modernize APIs and make the codebas easier to grok > is also not for the faint hearted. > > > > I hope both initiatives end up as a breath of fresh air for Solr > developers. And perhaps users may get their hands on auto-generated > OpenAPI docs for Solr as well! > > Theoretically foundations like this may make it feasible in the future > to auto-generate client code from the spec,so that full Admin API client > support in e.g. Go or Rust may be achievable without hand-coding. But that > is still far away :) > > > > Jan > > > > 2. des. 2021 kl. 05:52 skrev Ishan Chattopadhyaya < > ichattopadhy...@gmail.com>: > > > > > We are discussing this as if moving to an external framework is going > to be smooth. It's not. > > > > Noble, we won't know before someone has given it a try. My hunch > suggests it won't be smooth, but we can decide on that once we see a > concrete solution that 1) works well for all existing APIs (per core or > global) without hacks/workarounds, and 2) has no security implications, and > 3) doesn't clutter our codebase, and 4) doesn't affect our runtime > performance. > > > > On Thu, Dec 2, 2021 at 4:22 AM Noble Paul <noble.p...@gmail.com> wrote: > >> > >> > >> > >> On Thu, Dec 2, 2021 at 2:46 AM Jason Gerlowski <gerlowsk...@gmail.com> > wrote: > >>> > >>> > There are no known issues with the current system > >>> > >>> Maybe you're using hyperbole to emphasise a point, but let's steer > >>> this discussion away from straw-men and caricatures. I mentioned > >>> specific known issues in a previous reply as a direct response to your > >>> question about them. The incomplete support for data types > >>> (SOLR-15619 and SOLR-15796). The inflexible PermissionNameProvider > >>> integration (SOLR-15823). If you consider those "minor", fair enough, > >>> and you're welcome to that opinion. But saying that they don't exist > >>> is a mischaracterization that wastes time and muddies water. > >> > >> > >> We are discussing this as if moving to an external framework is going > to be smooth. It's not. I have seen how hard the Restlet integration was > and how it stood out like a sore thumb. The amount of code required to > integrate Solr APIs into restlet components was 10x more than the amount of > code written for the new framework and it still was incomplete . > Integrating anything to Solr is not simple and it's going to be an ongoing > effort to ensure that all of the functionalities of a SolrRequestHandler > are exposed to the new framework. Every single component that we have today > has ongoing improvements and bug fixes. Using that as an excuse to do a > complete rewrite is probably unwise. > >> > >> > >>> > >>> > Solr is not a general purpose web server where people write APIs > every day > >>> > >>> Totally agree - 99% of the time someone opens an API file in Solr, > >>> they're reading, not writing. So if JAX-RS didn't help that case, it > >>> wouldn't be worth the effort of switching. But IMO it helps that > >>> "read" case a lot. > >> > >> > >> 99% of Solr users never see the java code that implements an API let > alone writing a new API. They wouldn't care if an API is implemented using > a Servlet API, a custom framework or something else. They only care about > the input and output. New end points are rare. > >>> > >>> > >>> JAX-RS defined APIs expose inputs as strongly-typed parameters > >>> (compare to the weakly-typed SolrQueryRequest/SolrParams used today). > >>> JAX-RS enumerates every input to the API in one place. JAX-RS APIs > >>> can return any serializable type as a response (compare to the > >>> near-omnipresent NamedList today). > >>> > >>> (The annotation framework's PayloadObj class gets us a bit of this > >>> benefit, but not all of it and only on POST requests afaik.) > >>> > >>> This is all nice stuff at API-write time, but where it really helps is > >>> in making the code clearer and simpler whenever someone goes to read > >>> it later. No wondering what parameters an API actually takes. No > >>> puzzling out what a bunch of NamedList operations spread throughout > >>> API execution actually produce in the end. etc. > >>> > >>> > The only reason why anyone would need to use this framework is to > write a custom request handler. > >>> > >>> ...except for the majority of people who come in contact with the > >>> framework by reading an existing Solr API? This ties into your point > >>> above about APIs being written infrequently but read all the time. > >>> Improving readability is the big gain here, and I think JAX-RS offers > >>> real improvements in that regard. > >> > >> > >> We had no framework for the last 15+ years and V1 API (the only > actually used API) still uses no frameworks. Even the annotation framework > is not used much even though readability is a lot better in the annotation > based system. Readability has not been an overriding concern for V1 APIs > for sure > >> > >>> Also, to clarify, I'm not asserting that no one configures custom > >>> requestHandlers. I was wondering aloud how common it was, as an open > >>> question. > >>> > >> Your point IS right. IRL, most of our users do not write request > handlers . They write search components , query parsers and other plugins. > Because we are a search engine and not a web server. I have never seen a > user complaining about the V1 API of writing a request handler. They may > actually complain about how hard it is to deploy one. Our users are much > smarter than we give them credit for. > >> > >> > >>> > >>> > We did not fork Jackson. We are using Jackson itself. > >>> > >>> Ah, maybe you're right, "fork" is probably an unfair word. I looked > >>> for the serialization code, and I'll admit there is less than I > >>> thought involved here and I misunderstood how it works. So that's my > >>> bad. The JSON serialization/deserialization discussion is prob a > >>> digression from the core contention about whether JAX-RS would be > >>> helpful. I was curious about your earlier response and couldn't > >>> resist following up here but I should've done so elsewhere to avoid > >>> the distraction. > >>> > >>> Best, > >>> > >>> > >>> Jason > >>> > >>> On Tue, Nov 30, 2021 at 4:12 PM Noble Paul <noble.p...@gmail.com> > wrote: > >>> > > >>> > The annotation framework is just a single class and it is made to > work well with Solr instead of changing Solr to suit the needs of some > external framework. There are no known issues with the current system and > there are unknown issues that you'll face introducing a new framework. > >>> > > >>> > Solr is not a general purpose web server where people write APIs > every day. It's a finished product where people use the publicly available > APIs . We should focus our efforts on making our APIs work well . > >>> > > >>> > On Wed, Dec 1, 2021, 2:14 AM 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? I haven't > >>> >> run across many customers who used them extensively, but maybe > that's > >>> >> self-selecting in some way? > >>> > > >>> > > >>> > The only reason why anyone would need to use this framework is to > write a custom request handler. You're also saying nobody writes custom > request handlers. So, what problem are you trying to solve if you think > nobody uses them? > >>> > > >>> > > >>> >> > >>> >> > 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. > >>> > > >>> > > >>> > We did not fork Jackson. We are using Jackson itself. Jackson > supports custom annotations. There was a huge discussion why we should do > it this way. > >>> >> > >>> >> > >>> >> 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 > >>> >> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org > >>> For additional commands, e-mail: dev-h...@solr.apache.org > >>> > >> > >> > >> -- > >> ----------------------------------------------------- > >> Noble Paul > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org > For additional commands, e-mail: dev-h...@solr.apache.org > > -- ----------------------------------------------------- Noble Paul