Philippe Kernevez created AMBARI-9396:
-----------------------------------------

             Summary: Can't have the original error a Oozie service check when 
the error contain non utf-8 chars
                 Key: AMBARI-9396
                 URL: https://issues.apache.org/jira/browse/AMBARI-9396
             Project: Ambari
          Issue Type: Bug
          Components: ambari-server
    Affects Versions: 1.7.0
         Environment: CentOS + HDP 2.2 
Default encoding fr_ch.UTF-8
            Reporter: Philippe Kernevez


When I run Oozie service check I had a failure that is due to the logger that 
can't manage non utf-8 char.

The failure I had : 
{code}
Traceback (most recent call last):
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 59, in <module>
    OozieServiceCheck().execute()
  File 
"/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py",
 line 123, in execute
    method(env)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 31, in service_check
    oozie_smoke_shell_file( smoke_test_file_name)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 55, in oozie_smoke_shell_file
    logoutput = True
  File "/usr/lib/python2.6/site-packages/resource_management/core/base.py", 
line 148, in __init__
    self.env.run()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 149, in run
    self.run_action(resource, action)
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 115, in run_action
    provider_action()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/providers/system.py",
 line 237, in action_run
    path=self.resource.path)
  File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", 
line 36, in checked_call
    return _call(command, logoutput, True, cwd, env, preexec_fn, user, 
wait_for_finish, timeout, path)
  File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", 
line 101, in _call
    err_msg = Logger.get_protected_text(("Execution of '%s' returned %d. %s") % 
(command, code, out))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 11: 
ordinal not in range(128)
{code}

When I changed the file shell.py line 101 :
{code}
--- /usr/lib/python2.6/site-packages/resource_management/core/shell.py.back     
2015-01-29 11:33:09.576977676 +0100
+++ /usr/lib/python2.6/site-packages/resource_management/core/shell.py  
2015-01-29 11:46:41.957279179 +0100
@@ -98,7 +98,7 @@
     Logger.info(out)
   
   if throw_on_failure and code:
-    err_msg = Logger.get_protected_text(("Execution of '%s' returned %d. %s") 
% (command, code, out))
+    err_msg = Logger.get_protected_text(("Execution of '%s' returned %d. %s") 
% (command, code, out.decode('utf-8')))
     raise Fail(err_msg)
   
   return code, out
{code}

With that change, I had another error just after :
{code}
Traceback (most recent call last):
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 59, in <module>
    OozieServiceCheck().execute()
  File 
"/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py",
 line 123, in execute
    method(env)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 31, in service_check
    oozie_smoke_shell_file( smoke_test_file_name)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 55, in oozie_smoke_shell_file
    logoutput = True
  File "/usr/lib/python2.6/site-packages/resource_management/core/base.py", 
line 148, in __init__
    self.env.run()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 149, in run
    self.run_action(resource, action)
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 115, in run_action
    provider_action()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/providers/system.py",
 line 243, in action_run
    Logger.info("Retrying after %d seconds. Reason: %s" % 
(self.resource.try_sleep, str(ex)))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 
209: ordinal not in range(128)
{code}

Using this patch I can saw my error :
--- providers/system.py.bak     2015-01-29 03:08:43.871997817 -0800
+++ providers/system.py 2015-01-29 04:21:07.522199705 -0800
@@ -240,7 +240,11 @@
         if i == self.resource.tries-1: # last try
           raise ex
         else:
-          Logger.info("Retrying after %d seconds. Reason: %s" % 
(self.resource.try_sleep, str(ex)))
+          print(type(ex))
+          print(type(ex.__repr__()))
+          txt = ex.__repr__().decode('utf-8')
+          print(txt)
+          Logger.info("Retrying after %d seconds. Reason: %s" % 
(self.resource.try_sleep, txt))
           time.sleep(self.resource.try_sleep)
       except ExecuteTimeoutException:
         err_msg = ("Execution of '%s' was killed due timeout after %d 
seconds") % (self.resource.command, self.resource.timeout)


Now I saw the error in the output :
{code}
2015-01-29 04:24:11,810 - Error while executing command 'service_check':
Traceback (most recent call last):
  File 
"/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py",
 line 123, in execute
    method(env)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 31, in service_check
    oozie_smoke_shell_file( smoke_test_file_name)
  File 
"/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/services/OOZIE/package/scripts/service_check.py",
 line 55, in oozie_smoke_shell_file
    logoutput = True
  File "/usr/lib/python2.6/site-packages/resource_management/core/base.py", 
line 148, in __init__
    self.env.run()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 149, in run
    self.run_action(resource, action)
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/environment.py", 
line 115, in run_action
    provider_action()
  File 
"/usr/lib/python2.6/site-packages/resource_management/core/providers/system.py",
 line 241, in action_run
    raise ex
Fail: Execution of '/var/lib/ambari-agent/data/tmp/oozieSmoke2.sh redhat 
/etc/oozie/conf /usr/hdp/current/oozie-client/bin /etc/hadoop/conf 
/usr/hdp/current/hadoop-client/bin ambari-qa False' returned 1. dirname: 
op\xe9rande manquant
Saisissez \xab\xa0dirname --help\xa0\xbb pour plus d'informations.
15/01/29 04:23:27 INFO fs.TrashPolicyDefault: Namenode trash configuration: 
Deletion interval = 360 minutes, Emptier interval = 0 minutes.
Moved: 'hdfs://sandbox.hortonworks.com:8020/user/ambari-qa/examples' to trash 
at: hdfs://sandbox.hortonworks.com:8020/user/ambari-qa/.Trash/Current
{code}

The patch attach in https://issues.apache.org/jira/browse/AMBARI-9283 doesn't 
change any thing.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to