As for next steps, I was planning on heading for creation of filters next, so that when a servlet is create it can just be configured with all the same filters. That way the old dispatch filter can continue to do it's thing without requiring all 3 aspects to be migrated to a servlet at once.
On Wed, Oct 23, 2024 at 9:27 AM Gus Heck <gus.h...@gmail.com> wrote: > Absolutely one step at a time. We've seen in the past how an enormous > change is just too hard to work back into the mainline, and I'd hate to put > in the effort only to suffer that fate. Review is always welcome of course! > I'll check for that review you requested. I might have missed it. > > On Tue, Oct 22, 2024 at 11:06 PM David Smiley <dsmi...@apache.org> wrote: > >> Hmm, quite some ideas there :-) >> >> One step at a time, though I'm not sure I agree with the destination you >> fantasized about. Would the next step "just" be a matter of splitting out >> the parts of SolrDispatchFilter that are not very filter-y and creating a >> SolrServlet from that? Don't need to retain any dubious things >> like excludePatterns or "passthrough". Thinking of Solr 10 here; more >> freedom to do something different that works but might break <1% of users >> for some obscure thing. FWIW I'd be happy to be a code reviewer. I >> tagged >> you for a review on something nearby the other day. >> >> On Tue, Oct 22, 2024 at 5:35 PM Gus Heck <gus.h...@gmail.com> wrote: >> >> > Converting Solr to a servlet, or even a query servlet, an update servlet >> > and an admin servlet because those are really very separate operations >> has >> > been on my mind for a long time. The overlap among those operations is >> all >> > in things like authentication or tracing that should be reusable >> > ServletFilters, is one of those things I have long thought about, and >> these >> > thoughts are part of why I moved CoreContainer Initialization out of the >> > very bloated SolrDispatchFilter. Having CoreContainer exist before any >> > processing code is initialized or invoked was a critical first step to >> any >> > disassembly into a series of reusable filters and/or separation of >> > concerns. There's an even more radical possibility of making >> CoreContainer >> > a container (jetty) level resource, and separating the >> update/admin/query >> > bits into entirely distinct web applications... any of which might not >> be >> > installed in a particular running jetty. (assuming use sort of >> replication >> > to transfer indexes to installations hosting the query app... ) That's >> > pretty radical though, and servletization (TM) and separation of >> concerns >> > come first anyway. >> > >> > My recent web-socket stuff is also a sideways exploration of ways to >> get a >> > separate thing running inside our code base. Originally, I'd hoped to >> make >> > it a separate servlet, but we don't have any notion in our code base of >> how >> > to twiddle/tweak/adjust what's deployed via web.xml. I spent some time >> > thinking about the possibility of web-fragment.xml usage, but there's an >> > important tension there with startup time and classpath scanning. Our >> > classpath is gigantic so I'm loath to unset the metadata-complete=true >> > < >> > >> https://github.com/apache/solr/blob/main/solr/webapp/web/WEB-INF/web.xml#L22 >> > > >> > and so it wound up in the module world instead... >> > >> > I hack on things related to this occasionally, but it's a big project >> that >> > likely will take me a very long time to work through on my own unless I >> get >> > lucky and find a sponsor that allows me to work on it full time... >> > >> > -Gus >> > >> > On Tue, Oct 22, 2024 at 4:51 PM David Smiley <dsmi...@apache.org> >> wrote: >> > >> > > I suspect the choice of a ServletFilter vs Servlet was done for >> reasons >> > > that might have made sense forever-ago. It has always been weird. >> Does >> > it >> > > still make sense? Maybe Hossman remembers. >> > > >> > > Why I'm bringing this up: >> > > I heard of HTTP 404 responses coming from a Solr server I run, but >> didn't >> > > see the request in our Solr logs. It turns out that requests into >> Solr >> > to >> > > a non-existent core are not logged by Solr. A 404 made sense of >> course, >> > > and that's what happened, so there's no bug but the logging situation >> is >> > > disappointing. By code inspection, I see that SolrDispatchFilter >> will do >> > > the PASSTHROUGH case if it can't find the core. Jetty ultimately >> gets it >> > > (default servlet?) and returns the 404 and HTML in our >> "error404.html". >> > > Furthermore, I have also recently seen error scenarios where Solr does >> > > handle the request but doesn't log it *unless* it's a 500 (see >> > > ResponseUtils). Shouldn't we want at least one *Solr* log message for >> > > every request to Solr and no matter the HTTP status? I'm aware Jetty >> has >> > > logs but it's a patchwork between looking at both. >> > > >> > > ~ David Smiley >> > > Apache Lucene/Solr Search Developer >> > > http://www.linkedin.com/in/davidwsmiley >> > > >> > >> > >> > -- >> > http://www.needhamsoftware.com (work) >> > https://a.co/d/b2sZLD9 (my fantasy fiction book) >> > >> > > > -- > http://www.needhamsoftware.com (work) > https://a.co/d/b2sZLD9 (my fantasy fiction book) > -- http://www.needhamsoftware.com (work) https://a.co/d/b2sZLD9 (my fantasy fiction book)