Re: [Geoserver-devel] NullPointerException in OSHI flooding logs with errors

2022-02-03 Thread Jody Garnett
Assume you are using GeoServer 2.20.2?


2020-07-14 12:56:28,229 ERROR [status.OSHISystemInfoCollector] - null
java.lang.NullPointerException

at 
oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:293)

at 
oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:210)

at 
org.geoserver.system.status.OSHISystemInfoCollector.retrieveSystemInfo(OSHISystemInfoCollector.java:512)

Our pom uses:

  
com.github.oshi
oshi-core
5.8.6
  

GeoServer OSHISystemInfoCollector.java is calling here

(but
the line numbers do not quite line up):

case GEOSERVER_THREADS:
{
OSProcess gsProc = os.getProcess(os.getProcessId());*
// stack methods indicate here*
MetricValue mv = new MetricValue(info);
mv.setAvailable(true);* // stack trace is here on
line 512*
mv.setValue(gsProc.getThreadCount());
si = Collections.singletonList(mv);
break;
}

Checking the OSHI codebase, I cannot find the specific branch for 5.8.6
that matches with line number 293, so something is odd:

Branch "oshi-parent-java11-5.8.6" has line 293 in the
method queryFamilyVersionCodenameFromReleaseFiles():

// Attempt to read /etc/os-release file.
if ((familyVersionCodename = readOsRelease()) != null) {
// If successful, we're done. this.family has been set and
// possibly the versionID and codeName
return familyVersionCodename;
}

However the fact that there is a java 11 specific build of oshi is
concerning, perhaps an experiment is needed where you drop in a java11
specific build?

Downloading the source jar from maven, matches
https://github.com/oshi/oshi/blob/oshi-parent-5.8.6/oshi-core/src/main/java/oshi/software/os/linux/LinuxOperatingSystem.java
tag (and does not match your stack trace).
--
Jody Garnett


On Wed, 2 Feb 2022 at 13:14, Fernando Quadro  wrote:

> Kevin and All,
>
> I'm having this problem too, after I added some GC parameters (G1GC) to
> GeoServer. Does anyone know what can it be?
>
> https://deviniciative.wordpress.com/2020/07/23/dicas-para-tunning-de-g1-gc/
>
> I'm using CentOS 8, GeoServer 2.17.1, MariaDB and Java 11.
>
> Best regards,
>
> Fernando Quadro
> http://www.fernandoquadro.com.br
> https://www.linkedin.com/in/fernandoquadro/
>
>
> Em ter., 14 de jul. de 2020 às 14:36, Kevin Smith 
> escreveu:
>
>> Tomcat 9.0.37, Java 11, RHEL 8, new deployment with the Oracle, MSSQL,
>> Pregeneralized Features, and YSLD extensions.
>>
>> The system status module is adding an ERROR message to the logs once a
>> second because of a  NullPointerException.  This happens in the
>> LinuxOperatingSystem class when it tries to use the userGroup member
>> which is transient.  So it seems like this might be a deserialization
>> problem.  This is happening inside Wicket so I suspect that's what's
>> doing the serialization/deserialization.
>>
>> It looks like this happens whenever the status page is open and polling
>> in the background.  The page seems to be working correctly though.
>>
>> When I first encountered this the stack trace was being suppressed but
>> now it's present.
>>
>> Anyone more familiar with the system status page have any thoughts in
>> this?
>>
>> 2020-07-14 12:56:28,229 ERROR [status.OSHISystemInfoCollector] - null
>> java.lang.NullPointerException
>> at
>>
>> oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:293)
>> at
>>
>> oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:210)
>> at
>>
>> org.geoserver.system.status.OSHISystemInfoCollector.retrieveSystemInfo(OSHISystemInfoCollector.java:512)
>> at
>>
>> org.geoserver.system.status.BaseSystemInfoCollector.retrieveAllSystemInfo(BaseSystemInfoCollector.java:27)
>> at
>>
>> org.geoserver.web.system.status.RefreshedPanel$2.onConfigure(RefreshedPanel.java:99)
>> at org.apache.wicket.Component.configure(Component.java:1061)
>> at
>> org.apache.wicket.Component.internalBeforeRender(Component.java:941)
>> at org.apache.wicket.Component.beforeRender(Component.java:1018)
>> at
>> org.apache.wicket.Component.internalPrepareForRender(Component.java:2236)
>> at org.apache.wicket.Component.prepareForRender(Component.java:2275)
>> at
>> org.apache.wicket.page
>> .XmlPartialPageUpdate.writeComponent(XmlPartialPageUpdate.java:98)
>> at
>> org.apache.wicket.page
>> .PartialPageUpdate.writeComponents(PartialPageUpdate.java:248)
>> at
>> org.apache.wicket.page
>> .PartialPageUpdate.writeTo(PartialPageUpdate.java:161)
>> at
>>
>> 

Re: [Geoserver-devel] NullPointerException in OSHI flooding logs with errors

2022-02-02 Thread Fernando Quadro
Kevin and All,

I'm having this problem too, after I added some GC parameters (G1GC) to
GeoServer. Does anyone know what can it be?

https://deviniciative.wordpress.com/2020/07/23/dicas-para-tunning-de-g1-gc/

I'm using CentOS 8, GeoServer 2.17.1, MariaDB and Java 11.

Best regards,

Fernando Quadro
http://www.fernandoquadro.com.br
https://www.linkedin.com/in/fernandoquadro/


Em ter., 14 de jul. de 2020 às 14:36, Kevin Smith 
escreveu:

> Tomcat 9.0.37, Java 11, RHEL 8, new deployment with the Oracle, MSSQL,
> Pregeneralized Features, and YSLD extensions.
>
> The system status module is adding an ERROR message to the logs once a
> second because of a  NullPointerException.  This happens in the
> LinuxOperatingSystem class when it tries to use the userGroup member
> which is transient.  So it seems like this might be a deserialization
> problem.  This is happening inside Wicket so I suspect that's what's
> doing the serialization/deserialization.
>
> It looks like this happens whenever the status page is open and polling
> in the background.  The page seems to be working correctly though.
>
> When I first encountered this the stack trace was being suppressed but
> now it's present.
>
> Anyone more familiar with the system status page have any thoughts in this?
>
> 2020-07-14 12:56:28,229 ERROR [status.OSHISystemInfoCollector] - null
> java.lang.NullPointerException
> at
>
> oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:293)
> at
>
> oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:210)
> at
>
> org.geoserver.system.status.OSHISystemInfoCollector.retrieveSystemInfo(OSHISystemInfoCollector.java:512)
> at
>
> org.geoserver.system.status.BaseSystemInfoCollector.retrieveAllSystemInfo(BaseSystemInfoCollector.java:27)
> at
>
> org.geoserver.web.system.status.RefreshedPanel$2.onConfigure(RefreshedPanel.java:99)
> at org.apache.wicket.Component.configure(Component.java:1061)
> at org.apache.wicket.Component.internalBeforeRender(Component.java:941)
> at org.apache.wicket.Component.beforeRender(Component.java:1018)
> at
> org.apache.wicket.Component.internalPrepareForRender(Component.java:2236)
> at org.apache.wicket.Component.prepareForRender(Component.java:2275)
> at
> org.apache.wicket.page
> .XmlPartialPageUpdate.writeComponent(XmlPartialPageUpdate.java:98)
> at
> org.apache.wicket.page
> .PartialPageUpdate.writeComponents(PartialPageUpdate.java:248)
> at
> org.apache.wicket.page
> .PartialPageUpdate.writeTo(PartialPageUpdate.java:161)
> at
>
> org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:358)
> at
>
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
> at
>
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at
>
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:97)
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
> at
>
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
> at
>
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
> at
>
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
> at
>
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
> at
> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
> at
>
> org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:166)
> at
>
> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)
> at
>
> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52)
> at
>
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
> at
>
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
> at
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
> at
>
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
> at
>
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> at
>