NXLog Windows Service crash on termination/stop

Tags:

#1 bosarebo

Hello!

We run NXLog version nxlog-3.2.1991-x86 on Windows Server 2016.

Thanks for a good and well documented product. However, we have an issue when closing down the NXLog service. Sometimes stopping the service fails with the following error message:

"Error 109: The pipe has been ended".

When this happens, no cache file is created (configcache.dat) and at startup the whole table is sent again.

It is easy to reproduce this issue. Just stop the service after 5 seconds of running. However, it also happens after run time of 24 hours.

On this machine we use NXLog for monitoring a table in MS SQL and send the content to syslog over TCP. We have not changed the default setting for table polling interval (every second). As a work around we will lower the polling interval to every 60 second.

Kind regards.

// Erik

#2 b0ti Nxlog ✓
#1 bosarebo
Hello! We run NXLog version nxlog-3.2.1991-x86 on Windows Server 2016. Thanks for a good and well documented product. However, we have an issue when closing down the NXLog service. Sometimes stopping the service fails with the following error message: "Error 109: The pipe has been ended". When this happens, no cache file is created (configcache.dat) and at startup the whole table is sent again. It is easy to reproduce this issue. Just stop the service after 5 seconds of running. However, it also happens after run time of 24 hours. On this machine we use NXLog for monitoring a table in MS SQL and send the content to syslog over TCP. We have not changed the default setting for table polling interval (every second). As a work around we will lower the polling interval to every 60 second. Kind regards. // Erik

The windows service control manager communicates with the nxlog service over a pipe and I think the error message Error 109: The pipe has been ended most likely refers to the fact that the service has crashed or hangs.

The configcache.dat file gets written only on proper shutdown by default. The fact that it does not get updated also indicates that the service is likely crashing on shutdown. Another possibility is that it waits for some operation to complete (e.g. database statement to be executed) and gets killed due to the timeout.

I suggest adding CacheFlushInterval to the config, e.g.:

CacheFlushInterval 10

The above will force it to write configcache.dat every 10 seconds so that it does not have to reread the whole table again. The im_odbc in the NXLog EE beta also supports the ReadFromLast configuration option that could help here.