Datameer Fails to Start after an Upgrade

Problem

Following an upgrade, the Datameer server fails to start. The following error is logged in the conductor.log file when Datameer is attempting to start.

[anonymous] ERROR [2015-01-27 17:34:18.777] [main] (ContextLoader.java:227) - Context initialization failed
org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [classpath:/spring/beanRefFactory.xml], factory key [beanRefFactory]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'beanRefFactory' defined in class path resource [spring/beanRefFactory.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.context.support.ClassPathXmlApplicationContext]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginRegistryInitializer' defined in URL [jar:file:/opt/datameer/Datameer-4.5.16-hdp-2.1.2.0/webapps/ROOT/WEB-INF/lib/dap-conductor-4.5.16.jar!/datameer/dap/conductor/webapp/PluginRegistryInitializer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [datameer.dap.conductor.webapp.PluginRegistryInitializer]: Constructor threw exception; nested exception is java.lang.RuntimeException: No such file or directory
        at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:389)
        at org.springframework.web.context.ContextLoader.loadParentContext(ContextLoader.java:364)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:200)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at datameer.dap.conductor.webapp.ContextListener.contextInitialized(ContextListener.java:83)
        at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:549)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
        at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
        at org.mortbay.jetty.Server.doStart(Server.java:224)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.mortbay.start.Main.invokeMain(Main.java:194)
        at org.mortbay.start.Main.start(Main.java:534)
        at org.mortbay.start.Main.start(Main.java:441)
        at org.mortbay.start.Main.main(Main.java:119)

This issue is observed when there is a custom TMP variable configured in the etc/das-env.sh file.

Cause

This is a configuration issue. Specifically, the TMP variable configured in etc/das-env.sh must be an existing valid path in the file system.

This issue is observed when the TMP variable is configured to a path that does not exist. By default, this variable is set to /tmp which exists by default on most Unix/Linux environments.

Solution

To resolve this issue, ensure that the configured path for the TMP variable in the etc/das-env.sh file exists on the file system.

Additionally, ensure that the user account that is used to start the Datameer process has read and write privileges to the configured TMP directory.