Exception when running 'arc diff' (not defined in library map)

Dear all,

When executing arc diff I get the following exception:

Linting...
No lint engine configured for this project.
Running unit tests...
No unit test engine is configured for this project.
 Exception
ERR-CONDUIT-CORE: Failed to load symbol "ArcanistRepositoryURINormalizer" (of type "class or interface").

The class or interface "ArcanistRepositoryURINormalizer" is not defined in the library map of any loaded library.

If you are not a developer, this almost always means that a library is out of date. For example, you may have upgraded "phabricator/" without upgrading "arcanist/", or vice versa. It might also mean that you need to restart Apache or PHP-FPM. Make sure all libraries are up to date and all services have been restarted.

If you are a developer and this symbol was recently added or moved, your library map may need to be rebuilt. You can rebuild the map by running "arc liberate".

For more information, see: https://phurl.io/newclasses
(Run with `--trace` for a full exception trace.)

arcanist is installed on a dedicated machine connecting to Phabricator on second machine.

Both machines are:
OS: CentOS 8, amd64, php-7.2.24-1,
arcanist: e3ed781f363dbea8a14be5fbff4b1a610cb7eda4, Tue Jul 7 10:12:09 2020 -0700

Restarting phd and apache on the Phabricator server did not solve the problem.

The following PHP libraries are installed on the arcanist server:

php-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-cli-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-json-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64

I couldn’t understand/solve the problem with the full trace exception either. Do you have any ideas for me what I could try?

Many thanks for your help.

Best,
Graeme

I can’t reproduce this.

Can you show me the output of git status in your arcanist/ directory?

Thank you for looking into this. Please find the output below:

root@host:/app/arcanist # git status
On branch stable
Your branch is up to date with 'origin/stable'.

nothing to commit, working tree clean
root@host:/app/arcanist # git branch
  master
* stable

root@host:/app/arcanist # git log
commit e3ed781f363dbea8a14be5fbff4b1a610cb7eda4 (HEAD -> stable, origin/stable)
Author: epriestley <git@epriestley.com>
Date:   Tue Jul 7 10:12:09 2020 -0700

root@host:/app/arcanist # rpm -qa | grep -i php | sort
php-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-cli-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-json-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64

Thank you.

Maybe some facts about our system:

  • SELinux is currently disabled
  • We have an internal forward proxy (http_proxy, https_proxy)
  • I also tried without the proxy settings
  • Arc is installed in /app/arcanist
root@host:~/at $ cat /etc/profile.d/arc.sh
# ARCANIST
ARCANIST='/app/arcanist'
export ARCANIST

# PATH
PATH="${ARCANIST}/bin:${PATH}"
export PATH
  • The environment variables of the user are:
declare -x ARCANIST="/app/arcanist/"
declare -x HISTCONTROL="ignoredups"
declare -rx HISTFILESIZE="262144"
declare -rx HISTSIZE="262144"
declare -x HOME="/home/user"
declare -x HOSTNAME="host.domain.tld"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="user"
declare -x MAIL="/var/spool/mail/user"
declare -x OLDPWD="/home/user"
declare -x PAGER="less"
declare -x PATH="/home/user/.local/bin:/home/user/bin:/app/arcanist/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
declare -rx PROMPT_COMMAND="history -a"
declare -x PWD="/home/user/at"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x S_COLORS="auto"
declare -x TERM="xterm"
declare -x USER="user"
declare -x ftp_proxy="http://10.10.10.10:3128"
declare -x http_proxy="http://10.10.10.10:3128"
declare -x https_proxy="http://10.10.10.10:3128"
declare -x no_proxy="domain.tld"
  • The arc configuration of the user /home/user/.arcrc
user@host:~/at $ cat /home/user/.arcrc
{
  "config": {
    "phabricator.uri": "https://phabricator.domain.tld",
    "https.blindly-trust-domains": [
      "phabricator.domain.tld"
    ]
  },
  "hosts": {
    "https://phabricator.domain.tld/api/": {
      "token": "cli-asdfqwerasdfqwerasdfqwerasdf"
    }
  }
}
  • There are no global arc settings defined in /etc/arcconfig

I am currently out of ideas, but will keep trying.

EDIT: I just remembered this:
https://discourse.phabricator-community.org/t/unable-to-connect-to-notification-server-solved/3899/4

On the Phabricator server we modified the CA certificate file. I created this ticket above. The CA certificate file has not been modified on the arcanist server, but only on the Phabricator server.

Magically, arc diff now works again. I tried so many things, I could not keep track of what made it work.
I think adding the CA certificate file also to the arcanist server might have done the trick.

Thank you @epriestley for helping me. I don’t know the actual solution, but if anyone runs into this problem, it might be related to the CA certificates.