Skip to content

NPE when autoreloading a service in Grails 3.2.x #27

@ilopmar

Description

@ilopmar

With a Grails 3.2.x out-of-the-box application application with this plugin applied a a very simple service class there's a NPE when reloading changes in the service:

File /home/ivan/workspaces/misc/codemotion2016/consumer/grails-app/services/codemotion2016/MessageService.groovy changed, recompiling...
ERROR org.springsource.loaded.agent.Watcher - FileWatcher caught serious error, see cause
java.lang.NullPointerException: Cannot invoke method registerBeans() on null object
        at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at grails.plugins.rabbitmq.RabbitmqGrailsPlugin.onChange(RabbitmqGrailsPlugin.groovy:253)
        at org.grails.plugins.DefaultGrailsPlugin.notifyOfEvent(DefaultGrailsPlugin.java:750)
        at grails.plugins.DefaultGrailsPluginManager.informObservers(DefaultGrailsPluginManager.java:210)
        at org.grails.plugins.DefaultGrailsPlugin.notifyOfEvent(DefaultGrailsPlugin.java:774)
        at org.grails.plugins.AbstractGrailsPluginManager.informOfClassChange(AbstractGrailsPluginManager.java:395)
        at org.grails.dev.support.GrailsSpringLoadedPlugin.reloadEvent(GrailsSpringLoadedPlugin.java:52)
        at org.springsource.loaded.TypeRegistry.fireReloadEvent(TypeRegistry.java:2026)
        at org.springsource.loaded.ReloadableType.loadNewVersion(ReloadableType.java:444)
        at org.springsource.loaded.TypeRegistry.loadNewVersion(TypeRegistry.java:1018)
        at org.springsource.loaded.agent.ReloadableFileChangeListener.fileChanged(ReloadableFileChangeListener.java:104)
        at org.springsource.loaded.agent.Watcher.determineChangesSince(FileSystemWatcher.java:251)
        at org.springsource.loaded.agent.Watcher.run(FileSystemWatcher.java:235)
        at java.lang.Thread.run(Thread.java:745)
ERROR org.grails.plugins.AbstractGrailsPluginManager - Plugin [services:3.2.0] could not reload changes to file [/home/ivan/workspaces/misc/codemotion2016/consumer/grails-app/services/codemotion2016/MessageService.groovy]: Cannot invoke method registerBeans() on null object
java.lang.NullPointerException: Cannot invoke method registerBeans() on null object
        at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:57)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at grails.plugins.rabbitmq.RabbitmqGrailsPlugin.onChange(RabbitmqGrailsPlugin.groovy:253)
        at org.grails.plugins.DefaultGrailsPlugin.notifyOfEvent(DefaultGrailsPlugin.java:750)
        at grails.plugins.DefaultGrailsPluginManager.informObservers(DefaultGrailsPluginManager.java:210)
        at org.grails.plugins.DefaultGrailsPlugin.notifyOfEvent(DefaultGrailsPlugin.java:774)
        at org.grails.plugins.AbstractGrailsPluginManager.informOfClassChange(AbstractGrailsPluginManager.java:543)
        at org.grails.plugins.AbstractGrailsPluginManager.informOfFileChange(AbstractGrailsPluginManager.java:480)
        at grails.plugins.GrailsPluginManager$informOfFileChange$1.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at grails.boot.GrailsApp$_enableDevelopmentModeWatch_closure1.doCall(GrailsApp.groovy:228)
        at grails.boot.GrailsApp$_enableDevelopmentModeWatch_closure1.doCall(GrailsApp.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
        at groovy.lang.Closure.call(Closure.java:414)
        at groovy.lang.Closure.call(Closure.java:408)
        at groovy.lang.Closure.run(Closure.java:495)
        at java.lang.Thread.run(Thread.java:745)

Service

import grails.transaction.Transactional

@Transactional
class MessageService {
    static rabbitQueue = 'reverse'

    void handleMessage(String message) {
        println "Message received: ${message}"
        new Message(message: message.reverse().toUpperCase()).save()
    }
}

Debugging the execution it seems that beans is null:

screenshot from 2016-10-27 00-22-54

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions