This is probably due to SecurityManager rejecting an unknown path. Try starting Solr with:
-Dsolr.allowPaths=/netmnt/ or set env variable SOLR_OPTS="$SOLR_OPTS -Dsolr.allowPaths=/netmnt/" Then try again. Alternatively you can try disabling SecMgr withenv.var SOLR_SECURITY_MANAGER_ENABLED=false https://solr.apache.org/guide/solr/latest/configuration-guide/configuring-solr-xml.html Jan > 13. aug. 2023 kl. 04:40 skrev Oakley, Craig (NIH/NLM/NCBI) [C] > <craig.oak...@nih.gov.INVALID>: > > Thanks: I was forgetting the fact that (in order to get backups in the format > we expected) I added "incremental=false" to our backup script when we > upgraded from Solr8.5 to Solr8.11. > > It trying to test this functionality, however, I now find that backups do not > seem to be working for me *at all* in Solr9.2, with or without > "incremental=false" > > I keep getting a stack trace such as: > <?xml version="1.0" encoding="UTF-8"?> > <response> > > <lst name="responseHeader"> > <int name="status">500</int> > <int name="QTime">9</int> > </lst> > <lst name="error"> > <str name="msg">access denied ("java.io.FilePermission" > "/netmnt/[redacted-directory]" "read")</str> > <str name="trace">java.security.AccessControlException: access denied > ("java.io.FilePermission" "/netmnt/[redacted-directory]" "read") > at > java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) > at > java.base/java.security.AccessController.checkPermission(AccessController.java:897) > at > java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322) > at > java.base/java.lang.SecurityManager.checkRead(SecurityManager.java:661) > at java.base/sun.nio.fs.UnixPath.checkRead(UnixPath.java:818) > at > java.base/sun.nio.fs.UnixFileSystemProvider.exists(UnixFileSystemProvider.java:525) > at java.base/java.nio.file.Files.exists(Files.java:2435) > at > org.apache.solr.core.backup.repository.LocalFileSystemRepository.exists(LocalFileSystemRepository.java:110) > at > org.apache.solr.handler.admin.CollectionsHandler$CollectionOperation.lambda$static$32(CollectionsHandler.java:1404) > at > org.apache.solr.handler.admin.CollectionsHandler$CollectionOperation.execute(CollectionsHandler.java:1878) > at > org.apache.solr.handler.admin.CollectionsHandler.invokeAction(CollectionsHandler.java:355) > at > org.apache.solr.handler.admin.CollectionsHandler.handleRequestBody(CollectionsHandler.java:333) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:224) > at > org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:929) > at > org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:877) > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:548) > at > org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:252) > at > org.apache.solr.servlet.SolrDispatchFilter.lambda$doFilter$0(SolrDispatchFilter.java:220) > at > org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:257) > at > org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:227) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:215) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197) > at > org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) > at > org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1383) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1305) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) > at > org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:228) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) > at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) > at > org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:822) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) > at org.eclipse.jetty.server.Server.handle(Server.java:563) > at > org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505) > at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) > at > org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:934) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1078) > at java.base/java.lang.Thread.run(Thread.java:829) > </str> > <int name="code">500</int> > </lst> > </response> > > > It should be noted that the Linux account which runs Solr has read and write > access to the specified location, which is a subdirectory of what is listed > in allowPaths in all the solr.xml files of this SolrCloud, and which is > mounted on all hosts of the SolrCloud. > > I have tried both V1 API and V2 API as found at > solr.apache.org/guide/solr/9_2/deployment-guide/collection-management.html#backup > > Not being familiar with V2 API, I tried various permutations of > "file:///netmnt/" (various numbers of slashes, etc): they all seem to get the > same stack trace > > Does anyone have any example of a successful backup from Solr9.2? > > > > > -----Original Message----- > From: Dominique Bejean <dominique.bej...@eolya.fr> > Sent: Friday, August 11, 2023 9:32 AM > To: users@solr.apache.org > Subject: Re: [EXTERNAL] Re: authentication for Leader/Follower replication > > Hi Craig, > > Yes, starting with the 8.9 and 9.0 versions, Collection API allows > incremental backup and much more (corruption check, backup to Amazon S3 or > Google Cloud Storage) . > Take a look at this umbrella JIRA > https://issues.apache.org/jira/browse/SOLR-15086 > > Regards > > Dominique > > > > Le jeu. 10 août 2023 à 17:58, Oakley, Craig (NIH/NLM/NCBI) [C] > <craig.oak...@nih.gov.invalid> a écrit : > >> RE: a better option is to use the backup/restore functionality in the >> Collections API. >> >> My impression was that there is no facility for _incremental_ backup and >> retore in the collections API: is there? To do backup and scp and restore >> of terabytes of data every few minutes does not sound practical. >> >> What we have for our databases (MSSQL, Sybase, MongoDB, Postgres, MySQL as >> well as Solr) is redundancy (for failover) in our main Data Center, and >> redundancy in read-only reasonably-concurrent copies in our second Data >> Center. For Solr8.11 (and earlier), we have had SolrCloud for redundancy in >> our main Data Center, and Leader/Follower replication to the read-only >> SolrClouds in the second Data Center. At one time, we were hoping that CDCR >> would work better: but we never managed to get CDCR to work reliably (and >> perhaps others also found it unreliable, leading to it being deprecated >> rather than being fixed). We have found that SolrCloud does not work >> reliably when spread across Data Centers, so Leader/Follower replication >> (formerly known as Master/Slave replication) has been the only way we have >> found to keep our (read-only) copies in the second Data Center only a few >> minutes behind the data in the main Data Center (the only way to provide >> latency low enough to be comparable to MSSQL, Sybase, MongoDB, Postgres and >> MySQL). My supervisor was asking for clarification whether you are implying >> that Leader/Follower replication is being deprecated. >> >> >> In my continuing attempts to resolve these issues, I have come across a >> related question. The error message about SolrAuthV2 prompted me to wonder >> about the V1 and V2 syntax options (such as shown at >> https://solr.apache.org/guide/solr/9_2/deployment-guide/collection-management.html#reload); >> and I was wondering whether Leader/Follower replication changed from using >> syntax V1 to using syntax V2, and if that might contribute to the breaking >> of permissions. As an experiment in our test environment, I setup a >> permission in security.json to allow RELOAD collection without a password. >> After confirming that my V2 syntax does work _with_ a password, I then >> attempted RELOAD collection without a password using both syntax V1 and >> syntax V2. Syntax V1 succeeded and syntax V2 failed. I have tried several >> permutations in security.json to allow RELOAD without password in syntax >> V2, but have not yet found a successful permutation. Are there any >> clarifications what security.json changes are needed for syntax V2? Can it >> be confirmed whether Leader/Follower replication is using V2 (in other >> words, whether that may be contributing to the permission problem)? >> >> >> [11:51 dbh19850s 1152]$ curl -X POST "http://`cat >> /tmp/pswd230808`@localhost:$p/api/collections/helpdocs" -H 'Content-Type: >> application/json' -d '{"reload":{}}' >> { >> "responseHeader":{ >> "status":0, >> "QTime":255}, >> "success":{ >> "nosqltest21.be-md:9852_solr":{ >> "responseHeader":{ >> "status":0, >> "QTime":176}}, >> "nosqltest22.be-md:9852_solr":{ >> "responseHeader":{ >> "status":0, >> "QTime":219}}}} >> [11:51 dbh19850s 1152]$ curl >> "http://localhost:$p/solr/admin/collections?action=RELOAD&name=helpdocs" >> >> { >> "responseHeader":{ >> "status":0, >> "QTime":237}, >> "success":{ >> "nosqltest21.be-md:9852_solr":{ >> "responseHeader":{ >> "status":0, >> "QTime":176}}, >> "nosqltest22.be-md:9852_solr":{ >> "responseHeader":{ >> "status":0, >> "QTime":216}}}} >> [11:51 dbh19850s 1153]$ curl -X POST >> "http://localhost:$p/api/collections/helpdocs" >> -H 'Content-Type: application/json' -d '{"reload":{}}' >> <html> >> <head> >> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> >> <title>Error 401 Authentication failed, Response code: 401</title> >> </head> >> <body><h2>HTTP ERROR 401 Authentication failed, Response code: 401</h2> >> <table> >> <tr><th>URI:</th><td>/solr/____v2/collections/helpdocs</td></tr> >> <tr><th>STATUS:</th><td>401</td></tr> >> <tr><th>MESSAGE:</th><td>Authentication failed, Response code: >> 401</td></tr> >> <tr><th>SERVLET:</th><td>default</td></tr> >> </table> >> >> </body> >> </html> >> *[11:51 dbh19850s 1154]$ grep helpdocs 2023_08_10.request.log |tail -3 >> >> 127.0.0.1 - - [10/Aug/2023:15:51:23 +0000] "POST /api/collections/helpdocs >> HTTP/1.1" 200 280 >> 127.0.0.1 - - [10/Aug/2023:15:51:39 +0000] "GET >> /solr/admin/collections?action=RELOAD&name=helpdocs HTTP/1.1" 200 280 >> 127.0.0.1 - - [10/Aug/2023:15:51:47 +0000] "POST /api/collections/helpdocs >> HTTP/1.1" 401 491 >> [11:51 dbh19850s 1155]$ less solr.log >> ... >> 2023-08-10 11:51:39.878 DEBUG (qtp1003693033-264) [ ] >> o.a.s.s.RuleBasedAuthorizationPluginBase Found perm [{ >> "name":"openreload8", >> "path":"/admin/collections", >> "index":9, >> "collection":null, >> "role":null, >> "params":{ >> "action":["REGEX:(?i)RELOAD"], >> "name":["REGEX:(?i)helpdocs"]}}] to govern resource >> [/admin/collections] >> 2023-08-10 11:51:39.878 DEBUG (qtp1003693033-264) [ ] >> o.a.s.s.RuleBasedAuthorizationPluginBase Governing permission [{ >> "name":"openreload8", >> "path":"/admin/collections", >> "index":9, >> "collection":null, >> "role":null, >> "params":{ >> "action":["REGEX:(?i)RELOAD"], >> "name":["REGEX:(?i)helpdocs"]}}] has no role; permitting access >> ... >> 2023-08-10 11:51:47.731 DEBUG (qtp1003693033-249) [ ] >> o.a.s.s.RuleBasedAuthorizationPluginBase Found perm [{ >> "name":"catch-all-nocollection", >> "path":"/*", >> "index":24, >> "collection":null, >> "role":"allgen"}] to govern resource [/____v2/collections/helpdocs] >> 2023-08-10 11:51:47.731 DEBUG (qtp1003693033-249) [ ] >> o.a.s.s.RuleBasedAuthorizationPluginBase Governing permission [{ >> "name":"catch-all-nocollection", >> "path":"/*", >> "index":24, >> "collection":null, >> "role":"allgen"}] has role, but request principal cannot be identified; >> forbidding access >> >> >> As a side note, in our experience, the only thing that has been cluttering >> up solr.log with attempts to connect without a password has been >> Leader/Follower replication (formerly known as Master/Slave replication). >> >> >> -----Original Message----- >> From: Shawn Heisey <apa...@elyograg.org> >> Sent: Saturday, August 5, 2023 4:24 PM >> To: users@solr.apache.org >> Subject: [EXTERNAL] Re: authentication for Leader/Follower replication >> >> On 7/6/23 14:00, Oakley, Craig (NIH/NLM/NCBI) [C] wrote: >>> We are having problems transitioning Leader/Follower replication to >> Solr9.2.1 >>> >>> In Solr8.5 and below, what was then called Master/Slave replication had >> the annoying problem that, even though we specified httpBasicAuthUser and >> httpBasicAuthPassword, it would always attempt to connect first without a >> password before retrying with a password. This made solr.log noisy with >> lots of unnecessary login failures: but at least it worked. >> >> In general, this is how basic auth via http works. The client first >> attempts the request without any credentials, and receives a 401 response. >> >> At this point, a browser would see the 401 response and display a popup >> asking for username/password. >> >> Then on future requests to that server in the current session, the >> browser sends the supplied credentials on every request to that server. >> >> If you are supplying credentials in the replication config, it should >> NOT follow that pattern ... the credentials should be always used. >> >>> Now when we are preparing to upgrade to Solr9.2.1, we are having issues >> with the following: >>> 2023-07-06 15:46:53.315 INFO (indexFetcher-39-thread-1) [ ] >> o.a.s.h.IndexFetcher Last replication failed, so I'll force replication >>> 2023-07-06 15:46:53.320 WARN (indexFetcher-39-thread-1) [ ] >> o.a.s.h.IndexFetcher Leader at: >> http://[REDACTED]/solr/sequence2_shard1_replica_n1 >> is not available. >> >> The info above is valid for Solr running in standalone mode. But those >> core names indicate that you are running in SolrCloud mode. >> >> In cloud mode, Solr handles all replication. Don't attempt to actually >> configure the replication handler in cloud mode ... Solr will handle it >> all for you, and will even automatically take care of authenticating the >> requests. You don't need to configure the replication handler at all. >> >> If you are using the replication handler as a "back door" to copy >> indexes to a separate Solr install, a better option is to use the >> backup/restore functionality in the Collections API. >> >> Thanks, >> Shawn >> CAUTION: This email originated from outside of the organization. Do not >> click links or open attachments unless you recognize the sender and are >> confident the content is safe. >> >> > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and are confident > the content is safe. >