kopano-cachestat not working



  • Hi, I’m using Kopano 8.7.5 (UCS integration). Upgraded from 8.7.1. Since upgrade, monitoring by a self-written check_mk plugin does not return any data.
    Analyzed it and found that check_mk agent clears locale data on invocation:

    unset LANG
    export LC_ALL=C
    

    calling kopano-cachestat this way returns:

    root@hostname:/usr/lib/check_mk_agent/local# LANG= LC_ALL=C /usr/sbin/kopano-cachestat
    Traceback (most recent call last):
      File "/usr/sbin/kopano-cachestat", line 18, in <module>
        server = kopano.Server(options=options, auth_user='SYSTEM', auth_pass='')
      File "/usr/lib/python3/dist-packages/kopano/server.py", line 241, in __init__
        config = _config.Config(None, filename=config_file)
      File "/usr/lib/python3/dist-packages/kopano/config.py", line 103, in __init__
        self._parse_config(fh)
      File "/usr/lib/python3/dist-packages/kopano/config.py", line 115, in _parse_config
        for line in fh:
      File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 193: ordinal not in range(128)
    

    Looking into kopano-cachestat I found that the third column of the query

    table = server.table(PR_EC_STATSTABLE_SYSTEM, columns=[PR_DISPLAY_NAME_W, PR_EC_STATS_SYSTEM_VALUE, PR_EC_STATS_SYSTEM_DESCRIPTION])
    

    returns localized strings (the server is set up in de_DE.UTF-8 locale) even in the absence of LANG, and LC_ALL=C. I would propose stripping the third column from the query, given that it is not processed in any way:

    for row in table.rows():
        name, value, _ = row
    

    (and the ‘_’ variable not used anywhere in the script). With the proposed changes, the script starts working again under the given environment.

    Regards, sultansofswing.


Log in to reply