Pivotal Knowledge Base

Follow

Restarting components via Ambari fails with "AssertionError: undefined must be a subclass of undefined because filters depend on it."

Environment

Product Version
Pivotal HD 3.x
Ambari 1.7.x / 2.x

Symptom

Restarting components via Ambari will fail on one or more nodes with this message in Ambari:

Error Message

stderr: 
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/stacks/PHD/2.0.6/hooks/before-START/scripts/hook.py", line 39, in <module>
BeforeStartHook().execute()
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 216, in execute
method(env)
File "/var/lib/ambari-agent/cache/stacks/PHD/2.0.6/hooks/before-START/scripts/hook.py", line 33, in hook
setup_hadoop()
File "/var/lib/ambari-agent/cache/stacks/PHD/2.0.6/hooks/before-START/scripts/shared_initialization.py", line 74, in setup_hadoop
content=Template('commons-logging.properties.j2')
File "/usr/lib/python2.6/site-packages/resource_management/core/source.py", line 133, in __init__
autoescape=False, undefined=StrictUndefined, trim_blocks=True)
File "/usr/lib/python2.6/site-packages/ambari_jinja2/ambari_jinja2/environment.py", line 280, in __init__
_environment_sanity_check(self)
File "/usr/lib/python2.6/site-packages/ambari_jinja2/ambari_jinja2/environment.py", line 82, in _environment_sanity_check
assert issubclass(environment.undefined, Undefined), 'undefined must ' \
AssertionError: undefined must be a subclass of undefined because filters depend on it. 

Cause

This was caused by a problem with the Python installation. Although the root cause was not fully understood in the most recent case, it was believed that there were some missing libraries in Python. 

Resolution

The easiest way to resolve this is to remove and clean up the Ambari agent and then re-install the Ambari agent:

1. Stop the Ambari agent service:

ambari-agent stop

2. Backup the current Ambari configuration and installation files: 

tar czvf ambari_backup_<date>.tgz /var/lib/ambari-agent/* /var/run/ambari-agent/* /usr/lib/ambari-agent/* /etc/ambari-agent/* /var/log/ambari-agent/* /usr/lib/python2.6/site-packages/ambari*

3. Remove Ambari agent via the relevant package manager, for example in CentOS / RHEL:

yum erase ambari-agent

4. Remove the following directories: 

#rm -rf /var/lib/ambari-agent
#rm -rf /var/run/ambari-agent
#rm -rf /usr/lib/ambari-agent
#rm -rf /etc/ambari-agent
#rm -rf /var/log/ambari-agent
#rm -rf /usr/lib/python2.6/site-packages/ambari*

5. Re-install the Ambari agent. 

yum install ambari-agent

6. Re-register the Ambari agent with the Ambari Server:

ambari-agent reset <AMBARI SERVER HOSTNAME>

7. Start the Ambari agent:

[root@dn1 ~]# ambari-agent start
Verifying Python version compatibility...
Using python /usr/bin/python2.6
Checking for previously running Ambari Agent...
chown: cannot access ` /var/lib/ambari-agent/keys': No such file or directory
Starting ambari-agent
Verifying ambari-agent process status...
Ambari Agent successfully started
Agent PID at: /var/run/ambari-agent/ambari-agent.pid
Agent out at: /var/log/ambari-agent/ambari-agent.out
Agent log at: /var/log/ambari-agent/ambari-agent.log
[root@dn1 ~]#

 

Comments

Powered by Zendesk