Hi Simone,

PFA the jetty.xml file as requested.

Best Regards,

Kaushal

On Thu, Oct 13, 2022 at 12:01 AM Joakim Erdfelt <[email protected]> wrote:

> Jetty 9.4.x is now at End of Communnity Support
> See: https://github.com/eclipse/jetty.project/issues/7958
>
> This is a question better suited for solr.
>
> Jetty 9.4.44 is subject to several security vulnerabilities now.
> See https://www.eclipse.org/jetty/security_reports.php
> You should upgrade.
>
> Note that your error is not from your effort to set the
> maxFormContentSize, it's from a different block in your code related to
> setting the threadpool.
>
> o.e.j.x.XmlConfiguration Config error at <Arg name="threadpool">
>     <New id="threadpool"
> class="com.codahale.metrics.jetty9.InstrumentedQueuedThreadPool"><Arg
> name="registry">
>         <Call id="solrJettyMetricRegistry" name="getOrCreate"
> class="com.codahale.metrics.SharedMetricRegistries"><Arg>solr.jetty</Arg></Call>
>       </Arg></New>
>   </Arg>
>
> Traditionally, the `org.eclipse.jetty.server.Request.maxFormContentSize`
> value is set on the `WebAppContext` or the `ServletContextHandler`, not the
> `Server`.
> The `jetty.xml` doesn't usually contain configuration for a context.
>
> Joakim Erdfelt / [email protected]
>
>
> On Wed, Oct 12, 2022 at 11:02 AM Kaushal Shriyan <[email protected]>
> wrote:
>
>> Hi,
>>
>> I am running Apache Solr 8.11.2 on CentOS Linux release 7.9.2009 (Core)
>> trying to modify /opt/solr/server/etc/jetty.xml to set the Attribute
>> *maxFormContentSize* as per the below path
>>
>> [root@etc]# ls -l
>> total 76
>> -rw-r--r-- 1 root root  1950 May 13 03:21 jetty-gzip.xml
>> -rw-r--r-- 1 root root  3630 May 13 03:21 jetty-https8.xml
>> -rw-r--r-- 1 root root  3698 Oct 12 17:54 jetty-https.xml
>> -rw-r--r-- 1 root root  2686 Oct 12 17:53 jetty-http.xml
>> -rw-r--r-- 1 root root  1850 May 13 03:21 jetty-requestlog.xml
>> -rw-r--r-- 1 root root  2248 May 13 03:21 jetty-ssl.xml
>> -rw-r--r-- 1 root root 11646 Oct 12 17:51 jetty.xml
>> -rw-r--r-- 1 root root 11823 May 13 03:21 security.policy
>> -rw-r--r-- 1 root root  1279 May 13 03:21 security.properties
>> -rw-r--r-- 1 root root 24426 May 13 03:21 webdefault.xml
>> [root@etc]#
>>
>> I am adding the below attribute in /opt/solr/server/etc/jetty.xml to
>> increase maxFormContentSize
>>
>> <Call name="setAttribute">
>>       <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
>>       <Arg>1500000</Arg>
>> </Call>
>>
>> When i restart the solr service it fails with the below message.
>>
>> [root@etc]# service solr restart
>> Sending stop command to Solr running on port 8983 ... waiting up to 180
>> seconds to allow Jetty process 4311 to stop gracefully.
>> Waiting up to 180 seconds to see Solr running on port 8983 [\]  Still not
>> seeing Solr listening on 8983 after 180 seconds!
>> 2022-10-12 10:28:25.469 INFO  (main) [   ] o.e.j.u.log Logging
>> initialized @2083ms to org.eclipse.jetty.util.log.Slf4jLog
>> 2022-10-12 10:28:25.601 WARN  (main) [   ] o.e.j.x.XmlConfiguration
>> Config error at <Arg name="threadpool">
>>     <New id="threadpool"
>> class="com.codahale.metrics.jetty9.InstrumentedQueuedThreadPool"><Arg
>> name="registry">
>>         <Call id="solrJettyMetricRegistry" name="getOrCreate"
>> class="com.codahale.metrics.SharedMetricRegistries"><Arg>solr.jetty</Arg></Call>
>>       </Arg></New>
>>   </Arg>
>> 2022-10-12 10:28:25.601 WARN  (main) [   ] o.e.j.x.XmlConfiguration  =>
>> java.lang.IllegalStateException: Element 'Arg' not skipped
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:507)
>> java.lang.IllegalStateException: Element 'Arg' not skipped
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:507)
>> ~[jetty-xml-9.4.44.v20210927.jar:9.4.44.v20210927]
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:468)
>> ~[jetty-xml-9.4.44.v20210927.jar:9.4.44.v20210927]
>> at
>> org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:380)
>> ~[jetty-xml-9.4.44.v20210927.jar:9.4.44.v20210927]
>> at
>> org.eclipse.jetty.xml.XmlConfiguration.lambda$main$3(XmlConfiguration.java:1893)
>> ~[jetty-xml-9.4.44.v20210927.jar:9.4.44.v20210927]
>> at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
>> at
>> org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1857)
>> ~[jetty-xml-9.4.44.v20210927.jar:9.4.44.v20210927]
>> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> ~[?:?]
>> at
>> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> ~[?:?]
>> at
>> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> ~[?:?]
>> at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>> at org.eclipse.jetty.start.Main.invokeMain(Main.java:218)
>> ~[start.jar:9.4.44.v20210927]
>> at org.eclipse.jetty.start.Main.start(Main.java:491)
>> ~[start.jar:9.4.44.v20210927]
>> at org.eclipse.jetty.start.Main.main(Main.java:77)
>> ~[start.jar:9.4.44.v20210927]
>> [root@etc]#
>>
>> Am I missing anything? Please guide me to modify maxFormContentSize in
>> solr service. Thanks in advance.
>>
>> Best Regards,
>>
>> Kaushal
>> ReplyForward
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To unsubscribe from this list, visit
>> https://www.eclipse.org/mailman/listinfo/jetty-users
>>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
>
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd";>

<!-- =============================================================== -->
<!-- Configure the Jetty Server                                      -->
<!--                                                                 -->
<!-- Documentation of this file format can be found at:              -->
<!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax        -->
<!--                                                                 -->
<!-- =============================================================== -->


<Configure id="Server" class="org.eclipse.jetty.server.Server">
 <Call name="setAttribute">
      <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
      <Arg>1500000</Arg>
</Call>

  <!-- =========================================================== -->
  <!-- Configure the Server Thread Pool.                           -->
  <!-- The server holds a common thread pool which is used by      -->
  <!-- default as the executor used by all connectors and servlet  -->
  <!-- dispatches.                                                 -->
  <!--                                                             -->
  <!-- Configuring a fixed thread pool is vital to controlling the -->
  <!-- maximal memory footprint of the server and is a key tuning  -->
  <!-- parameter for tuning.  In an application that rarely blocks -->
  <!-- then maximal threads may be close to the number of 5*CPUs.  -->
  <!-- In an application that frequently blocks, then maximal      -->
  <!-- threads should be set as high as possible given the memory  -->
  <!-- available.                                                  -->
  <!--                                                             -->
  <!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool   -->
  <!-- for all configuration that may be set here.                 -->
  <!-- =========================================================== -->
  <Arg name="threadpool">
    <New id="threadpool" class="com.codahale.metrics.jetty9.InstrumentedQueuedThreadPool">
      <Arg name="registry">
        <Call id="solrJettyMetricRegistry" name="getOrCreate" class="com.codahale.metrics.SharedMetricRegistries">
          <Arg>solr.jetty</Arg>
        </Call>
      </Arg>
    </New>
  </Arg>

  <Get name="ThreadPool">
    <Set name="minThreads" type="int"><Property name="solr.jetty.threads.min" default="10"/></Set>
    <Set name="maxThreads" type="int"><Property name="solr.jetty.threads.max" default="10000"/></Set>
    <Set name="idleTimeout" type="int"><Property name="solr.jetty.threads.idle.timeout" default="120000"/></Set>
    <Set name="stopTimeout" type="int"><Property name="solr.jetty.threads.stop.timeout" default="60000"/></Set>
    <Set name="detailedDump">false</Set>
  </Get>


  <!-- =========================================================== -->
  <!-- Http Configuration.                                         -->
  <!-- This is a common configuration instance used by all         -->
  <!-- connectors that can carry HTTP semantics (HTTP, HTTPS, SPDY)-->
  <!-- It configures the non wire protocol aspects of the HTTP     -->
  <!-- semantic.                                                   -->
  <!--                                                             -->
  <!-- This configuration is only defined here and is used by      -->
  <!-- reference from the jetty-http.xml, jetty-https.xml and      -->
  <!-- jetty-spdy.xml configuration files which instantiate the    -->
  <!-- connectors.                                                 -->
  <!--                                                             -->
  <!-- Consult the javadoc of o.e.j.server.HttpConfiguration       -->
  <!-- for all configuration that may be set here.                 -->
  <!-- =========================================================== -->
  <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
    <Set name="secureScheme">https</Set>
    <Set name="securePort"><Property name="solr.jetty.secure.port" default="8443" /></Set>
    <Set name="outputBufferSize"><Property name="solr.jetty.output.buffer.size" default="32768" /></Set>
    <Set name="outputAggregationSize"><Property name="solr.jetty.output.aggregation.size" default="8192" /></Set>
    <Set name="requestHeaderSize"><Property name="solr.jetty.request.header.size" default="8192" /></Set>
    <Set name="responseHeaderSize"><Property name="solr.jetty.response.header.size" default="8192" /></Set>
    <Set name="sendServerVersion"><Property name="solr.jetty.send.server.version" default="false" /></Set>
    <Set name="sendDateHeader"><Property name="solr.jetty.send.date.header" default="false" /></Set>
    <Set name="headerCacheSize"><Property name="solr.jetty.header.cache.size" default="512" /></Set>
    <Set name="delayDispatchUntilContent"><Property name="solr.jetty.delayDispatchUntilContent" default="false"/></Set>
    <!-- Uncomment to enable handling of X-Forwarded- style headers
    <Call name="addCustomizer">
      <Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
    </Call>
    -->
  </New>

    <!-- =========================================================== -->
    <!-- RewriteHandle to set headers, redirect root to Solr         -->
    <!-- =========================================================== -->
     <New id="RewriteHandler" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
      <Set name="rewriteRequestURI">true</Set>
      <Set name="rewritePathInfo">false</Set>
      <Set name="originalPathAttribute">requestedPath</Set>

      <!-- security-related headers -->
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
            <Set name="pattern">/solr/*</Set>
            <Set name="name">Content-Security-Policy</Set>
            <Set name="value">default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';</Set>
          </New>
        </Arg>
      </Call>
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
            <Set name="pattern">/solr/*</Set>
            <Set name="name">X-Content-Type-Options</Set>
            <Set name="value">nosniff</Set>
          </New>
        </Arg>
      </Call>
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
            <Set name="pattern">/solr/*</Set>
            <Set name="name">X-Frame-Options</Set>
            <Set name="value">SAMEORIGIN</Set>
          </New>
        </Arg>
      </Call>
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
            <Set name="pattern">/solr/*</Set>
            <Set name="name">X-XSS-Protection</Set>
            <Set name="value">1; mode=block</Set>
          </New>
        </Arg>
      </Call>

      <!-- redirect root to solr -->
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.RedirectRegexRule">
            <Set name="regex">^/$</Set>
            <Set name="location">/solr/</Set>
          </New>
        </Arg>
      </Call>
       <Call name="addRule">
         <Arg>
           <New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
             <Set name="pattern">/v2/*</Set>
             <Set name="replacement">/solr/____v2</Set>
           </New>
         </Arg>
       </Call>
       <Call name="addRule">
         <Arg>
           <New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
             <Set name="pattern">/api/*</Set>
             <Set name="replacement">/solr/____v2</Set>
           </New>
         </Arg>
       </Call>
       <Set name="handler">
         <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
           <Set name="handlers">
             <Array type="org.eclipse.jetty.server.Handler">
               <Item>
                 <New class="org.eclipse.jetty.server.handler.InetAccessHandler">
                   <Call name="include">
                     <Arg>
                       <Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
                         <Arg><Property name="solr.jetty.inetaccess.includes" default=""/></Arg>
                       </Call>
                     </Arg>
                   </Call>
                   <Call name="exclude">
                     <Arg>
                       <Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
                         <Arg><Property name="solr.jetty.inetaccess.excludes" default=""/></Arg>
                       </Call>
                     </Arg>
                   </Call>
                   <Set name="handler">
                     <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
                   </Set>
                 </New>
               </Item>
               <Item>
                 <New id="InstrumentedHandler" class="com.codahale.metrics.jetty9.InstrumentedHandler">
                   <Arg><Ref refid="solrJettyMetricRegistry"/></Arg>
                   <Set name="handler">
                     <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
                   </Set>
                 </New>
               </Item>
             </Array>
           </Set>
         </New>
       </Set>
     </New>

    <!-- =========================================================== -->
    <!-- Set handler Collection Structure                            -->
    <!-- =========================================================== -->
    <Set name="handler">
      <Ref id="RewriteHandler"/>
    </Set>

    <!-- =========================================================== -->
    <!-- extra options                                               -->
    <!-- =========================================================== -->
    <Set name="stopAtShutdown">true</Set>
    <Set name="dumpAfterStart">false</Set>
    <Set name="dumpBeforeStop">false</Set>

    <Call name="addBean">
      <Arg>
        <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
          <Set name="contexts">
            <Ref refid="Contexts" />
          </Set>
          <Call name="setContextAttribute">
            <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
            <Arg>.*/servlet-api-[^/]*\.jar$</Arg>
          </Call>

          <Call name="addAppProvider">
            <Arg>
              <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
                <Set name="monitoredDirName"><Property name="jetty.base" default="."/>/contexts</Set>
                <Set name="scanInterval">0</Set>
              </New>
            </Arg>
          </Call>

          <!-- Add a customize step to the deployment lifecycle -->
          <!-- uncomment and replace DebugBinding with your extended AppLifeCycle.Binding class
          <Call name="insertLifeCycleNode">
            <Arg>deployed</Arg>
            <Arg>starting</Arg>
            <Arg>customise</Arg>
          </Call>
          <Call name="addLifeCycleBinding">
            <Arg>
              <New class="org.eclipse.jetty.deploy.bindings.DebugBinding">
                <Arg>customise</Arg>
              </New>
            </Arg>
          </Call>
          -->

        </New>
      </Arg>
    </Call>

</Configure>
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to