When developing software on NetKernel, it is essential to have access to a local running NetKernel instance on which you can hot-deploy modules from your application. This gives you access to the embedded “backend fulcrum” web application (normally available on http://localhost:1060) with its various development, testing, monitoring and diagnosis tools.
It also gives you access to the NetKernel server console log, which provides a lot of information on the health and integrity of your NetKernel - based system, if you know how what to look out for and how to interpret the information.
This page collates and describes some of the most common and not-so-common examples of NetKernel console log messages and errors to help you understand what they mean and advice on how to go about fixing them.
During its bootstrap sequence, NetKernel progressivily loads modules according to their Run Level, starting from Run Level 1 which is reserved for core system modules. By default, all application - level modules have a Run Level = 7 and are loaded together.
The normal sequence of related console log messages when starting a NetKernel instance will look something like this:
... ... (Ignoring startup before Run Level 7) ... I 21:05:52 ModuleManager System changing to RunLevel  ... ... (ModuleManager loads each module it can find at Run Level 7) ... (eg:) I 21:05:53 ModuleManager Loading Lang / Math v0.10.0 I 21:05:53 ModuleManager Loading Database / H2 v1.3.1 I 21:05:53 ModuleManager Loading Doc / Patterns v1.6.0 ... ... (All modules are now loaded) I 21:05:53 ModuleManager Commissioning Modules... I 21:05:55 Kernel Initialising commissioned modules... ... ... (Each loaded module is now commissioned) ... I 21:05:59 Kernel NetKernel Ready, accepting requests... I 21:05:59 ModuleManager System now at RunLevel  I 21:05:59 InitEndpoint Init completed - system at RunLevel  I 21:06:01 ModuleListAc~ ModuleListAccessor complete ... ... (NetKernel is operational)
ModuleManager endpoint is responsible for the co-ordination of loading and commissioning every module. If there is something wrong with a module definition, a NetKernel module - related class will report an error which will be visible in the console.log.
Look out particularly for console log messages prefixed by
W (warn) or
As well as watching the system log in a realtime system console, you can also use the NetKernel Logs View page of the Backend Fulcrum (but you have to keep hitting Refresh to get an update).
When you are writing or modifying a
module.xml file of a Standard Module, it is really important to watch the NetKernel console log to spot any problems.
Some of the error messages related to module initialisation are fairly easy to figure out, whilst some of them do not give you much to go on.
I have a typo in one of the xml tag declaratios in a ‘module.xml’ file:
After saving the
module.xml and re-building the module, NetKernel re-loads the module:
I 21:37:59 ModuleManager Changes detected in deployed modules I 21:37:59 ModuleManager Unloading Football - Matches v1.0.0 I 21:38:00 ModuleManager Loading Football - Matches v1.0.0 I 21:38:00 ModuleManager Commissioning Modules... I 21:38:00 Kernel Initialising commissioned modules... W 21:38:00 MapperOverlay Failed to create mapping [/config/endpoint] in space [Football - Matches - Results (private)]: Invalid Mapper Configuration: [/config/endpoint/grammar/active/identifiet] active tag must only contain tags identifier,argument,varargs, [/config/endpoint/grammar/active] active tag must contain one or more identifier tags ... I 21:38:01 ModuleListAc~ ModuleListAccessor complete
MapperOverlay has found and reported the error. Let’s break down the message in a bit more detail:
||The endpoint class loading a subtree of the
||The error message, so something has prevented the Mapper configuration from being parsed|
||A relative xpath expression to the location of the directly affected endpoint: the 1st
||Tells us the name of the
||A more detailed error name|
||Tells us that an
||Tells us that an
I correct the typo in the module.xml:
and rebuild the module:
I 22:29:06 ModuleManager Changes detected in deployed modules ... I 22:29:07 ModuleManager Commissioning Modules... I 22:29:07 Kernel Initialising commissioned modules... I 22:29:07 Kernel NetKernel Ready, accepting requests...
This time, the
ModuleManager is able to commission my fixed module without further problems.
W 11:37:01 Import Import [urn:com:ten60:netkernel:nkp2:loadbalance] in [Server / Virtual Worker (private)] cannot be resolved
This indicates that the NetKernel instance cannot find a declaration for a space called
urn:com:ten60:netkernel:nkp2:loadbalance in any of the modules loaded in the system.
In this case, I need to use the Apposite Package Manager to download and install the NKP2-LoadBalancer module into my system.
If the NKEE license expires, the NK log will start reporting errors in a number of modules (all the EE - licensed ones as it happens). e.g. :
W 13:35:50 ModuleListAc~ Unhandled exception obtaining space meta from Enterprise HTTP Server Module : <ex> <ex> <id>org.netkernel.layer0.nkf.NKFException</id> </ex> <ex> <id>RequestFrameException</id> <request>META "" in Enterprise HTTP Server Module </request> </ex> <ex> <id>Request Resolution Failure</id> <message>META "" in Enterprise HTTP Server Module </message> </ex> </ex>
If you look in the NK instance backend fulcrum, you will see a warning that the Enterprise license has expired. Unfortunately the console log does not report an expired license notification. There is a webhook available in the Backend Control Panel to setup to receive such warnings, but that is intended for use in a production environment.