Cannot submit diff via arcanist


#1

Submitting this as a question instead of a bug, since we’re new to Phab and Arcanist.

Steps:

  1. I installed arc, added it to path
  2. arc install-certificate
  3. cd project/
  4. vim .arcconfig:
{
  "phabricator.uri": "https://our.phabricator.uri/",
  "history.immutable": true
}

  1. arc diff

… and whatever I set in Reviewers: or Subscribers fields, I cannot get arc to submit it due to:

ERR-CONDUIT-CORE: Validation errors:
  - The selected view policy excludes you. Choose a view policy which allows you to view the object.

I am an administrator, I have access to both git repository and phab project said repository is linked to.

I tried the following, to no avail:

  • using Firstname Lastname format - throws an error
  • using phab usernames (e.g. mice in my case), which arc seems to accept, but still fails with the error above
  • using project alias #project_alias, which arc seems to accept, but still fails with the error above

I also checked default values for Create project form, they are set as follows:

  • Visible To: Project Members (which I am)
  • Editable By: Administrators (which I am)
  • Joinable By: Administrators (which I am)

Google research did not find any tips, the most related results seems to be this one: https://secure.phabricator.com/T10661 (and this comment)

However changing view policy does not allow me to submit the diff.

Any tips, please?

Thank you


#2

There might be another object involved in the flow that you can’t see.
please run arc diff with --trace, delete any passwords from the output, and paste it here; There might be something useful there.


#3

I checked the trace beforehand and it did not indicate (at least to me) anything that I can fix by configuration.

Here it is:

$ arc diff --trace
 ARGV  "C:/Users/redacted/work/redacted/_phacility/arcanist/bin/../scripts/arcanist.php" "diff" "--trace"
 LOAD  Loaded "phutil" from "C:\Users\redacted\work\redacted\_phacility\libphutil\src".
 LOAD  Loaded "arcanist" from "C:\Users\redacted\work\redacted\_phacility\arcanist\src".
Config: Reading user configuration file "C:\Users\redacted\AppData\Roaming/.arcrc"...
Config: Did not find system configuration at "C:\ProgramData\Phabricator/Arcanist/config".
Working Copy: Reading .arcconfig from "C:\Users\redacted\work\redacted\redacted/.arcconfig".
Working Copy: Path "C:\Users\redacted\work\redacted\redacted" is part of `git` working copy "C:\Users\redacted\work\redacted\redacted".
Working Copy: Project root is at "C:\Users\redacted\work\redacted\redacted".
Config: Did not find local configuration at "C:\Users\redacted\work\redacted\redacted\.git\arc/config".
>>> [0] <http> https://our.phabricator.uri/api/user.whoami
<<< [0] <http> 1,285,073 us
>>> [1] <exec> $ git --version
<<< [1] <exec> 98,006 us
>>> [2] <exec> $ git status --porcelain=2 -z
<<< [2] <exec> 306,016 us
You have untracked files in this working copy.

  Working copy: C:\Users\redacted\work\redacted\redacted\

  Untracked changes in working copy:
  (To ignore these changes, add them to ".git/info/exclude".)

    redacted

    Ignore these untracked files and continue? [y/N] y


>>> [3] <event> diff.didCollectChanges <listeners = 0>
<<< [3] <event> 13,001 us
>>> [4] <exec> $ git rev-parse --verify HEAD^
<<< [4] <exec> 83,004 us
>>> [5] <exec> $ git rev-parse --abbrev-ref --symbolic-full-name "@{upstream}"
<<< [5] <exec> 76,004 us
>>> [6] <exec> $ git rev-parse --git-dir
<<< [6] <exec> 74,003 us
>>> [7] <exec> $ git cat-file -t "origin/develop"
<<< [7] <exec> 93,006 us
>>> [8] <exec> $ git merge-base "origin/develop" HEAD
<<< [8] <exec> 120,007 us
>>> [9] <exec> $ git rev-parse "HEAD"
<<< [9] <exec> 71,003 us
>>> [10] <exec> $ git log --first-parent --format=medium "9b2dd71c76a6806310eb621adff2e1ef98a1e955".."251346d732717c307299da53eab96e51c18b6c13"
<<< [10] <exec> 129,006 us
>>> [11] <exec> $ git log "251346d732717c307299da53eab96e51c18b6c13" --not "9b2dd71c76a6806310eb621adff2e1ef98a1e955" --format=%H%x01%T%x01%P%x01%at%x01%an%x01%aE%x01%s%x01%s%n%n%b%x02 --
<<< [11] <exec> 80,003 us
>>> [12] <http> https://our.phabricator.uri/api/differential.query
<<< [12] <http> 47,003 us
You have a saved revision message in '.git\arc\create-message'.
Message begins:

       T539 Redacted

You can use this message, or discard it.

    Do you want to use this message? [Y/n] y


>>> [13] <exec> $ git log "251346d732717c307299da53eab96e51c18b6c13" --not "9b2dd71c76a6806310eb621adff2e1ef98a1e955" --format=%H%x01%T%x01%P%x01%at%x01%an%x01%aE%x01%s%x01%s%n%n%b%x02 --
<<< [13] <exec> 83,005 us
>>> [14] <http> https://our.phabricator.uri/api/differential.parsecommitmessage
<<< [14] <http> 60,002 us
>>> [15] <http> https://our.phabricator.uri/api/differential.parsecommitmessage
<<< [15] <http> 39,002 us
>>> [16] <http> https://our.phabricator.uri/api/differential.parsecommitmessage
<<< [16] <http> 39,002 us
>>> [17] <http> https://our.phabricator.uri/api/differential.parsecommitmessage
<<< [17] <http> 39,001 us
>>> [18] <event> diff.willBuildMessage <listeners = 0>
<<< [18] <event> 0 us
>>> [19] <exec> $ git symbolic-ref --quiet HEAD
<<< [19] <exec> 53,002 us
>>> [20] <exec> $ where "editor"
<<< [20] <exec> 163,009 us
>>> [21] <exec> $ where "nano"
<<< [21] <exec> 134,006 us
>>> [22] <exec> $ nano  "C:\Users\redacted\AppData\Local\Temp\edit.36kecnpvnkao8co0\new-commit"
<<< [22] <exec> 3,653,208 us
>>> [23] <http> https://our.phabricator.uri/api/differential.parsecommitmessage
<<< [23] <http> 68,003 us
>>> [24] <conduit> user.query() <bytes = 176>
>>> [25] <http> https://our.phabricator.uri/api/user.query
<<< [25] <http> 38,002 us
<<< [24] <conduit> 38,002 us
>>> [26] <event> diff.didBuildMessage <listeners = 0>
<<< [26] <event> 0 us
Linting...
No lint engine configured for this project.
Running unit tests...
>>> [27] <exec> $ git rev-parse "HEAD"
<<< [27] <exec> 33,000 us
>>> [28] <exec> $ git merge-base "9b2dd71c76a6806310eb621adff2e1ef98a1e955" "251346d732717c307299da53eab96e51c18b6c13"
<<< [28] <exec> 35,001 us
>>> [29] <exec> $ git diff --no-ext-diff --no-textconv --submodule=short --raw "9b2dd71c76a6806310eb621adff2e1ef98a1e955" HEAD --
<<< [29] <exec> 187,011 us
No unit test engine is configured for this project.
>>> [30] <exec> $ git diff --no-ext-diff --no-textconv --submodule=short --no-color --src-prefix=a/ --dst-prefix=b/ -U32767 -M -C "9b2dd71c76a6806310eb621adff2e1ef98a1e955" "251346d732717c307299da53eab96e51c18b6c13" --
<<< [30] <exec> 207,011 us
>>> [31] <exec> $ git rev-parse "9b2dd71c76a6806310eb621adff2e1ef98a1e955"
<<< [31] <exec> 45,001 us
>>> [32] <exec> $ git symbolic-ref --quiet HEAD
<<< [32] <exec> 34,002 us
>>> [33] <exec> $ git log --format=medium -n16 "9b2dd71c76a6806310eb621adff2e1ef98a1e955"
<<< [33] <exec> 171,009 us
>>> [34] <exec> $ git symbolic-ref --quiet HEAD
<<< [34] <exec> 54,003 us
>>> [35] <exec> $ git rev-parse --symbolic-full-name "feature/t539-archive-offset-fix"@{upstream}
<<< [35] <exec> 39,002 us
>>> [36] <exec> $ git ls-remote --get-url "origin"
<<< [36] <exec> 37,001 us
>>> [37] <http> https://our.phabricator.uri/api/repository.query
<<< [37] <http> 40,003 us
>>> [38] <http> https://our.phabricator.uri/api/differential.creatediff
<<< [38] <http> 64,002 us

[2018-07-20 04:42:40] EXCEPTION: (ConduitClientException) ERR-CONDUIT-CORE: Validation errors:
  - The selected view policy excludes you. Choose a view policy which allows you to view the object. at [<phutil>\src\conduit\ConduitFuture.php:62]
arcanist(head=master, ref.master=875d01836037), phutil(head=master, ref.master=4206849bb05b)
  #0 ConduitFuture::didReceiveResult(array) called at [<phutil>\src\future\FutureProxy.php:58]
  #1 FutureProxy::getResult() called at [<phutil>\src\future\FutureProxy.php:35]
  #2 FutureProxy::resolve() called at [<phutil>\src\conduit\ConduitClient.php:64]
  #3 ConduitClient::callMethodSynchronous(string, array) called at [<arcanist>\src\workflow\ArcanistDiffWorkflow.php:519]
  #4 ArcanistDiffWorkflow::run() called at [<arcanist>\scripts\arcanist.php:394]

#4

ok…
There’s some object in the system which you can’t see, and this somehow tries to touch it.

It could be a Herald rule or a Owners package, that are either invisible themselves or try to act on users/projects you can’t see. It could also be some value in the commit message/revision description that refers to a task/commit/revision/something else you can’t see.
Being administrator doesn’t mean you can see all objects; The only way to see all objects is to look directly in the database.

Can you create the commit without specifying any reviewers or subscribers? I don’t think this should be directly related.

There’s definitely a bug here, at least in the fact that we don’t tell you which object you can’t see. Unfortunately, we can’t fix it without reproduction steps


#5

I just tried to create it without specifying reviewers/submitters and got the same result. We don’t use Herald nor Owners yet, so I don’t think there should be any permission issues from those two.

I initially omitted reproduction steps, as I was not sure whether this was really a bug or whether it was just some configuration error on our end. I’ll look into putting them together via your test instance, but first I need to update our Phabricator instance and try to replicate it there.

Thank you for your help with this @avivey - much appreciated.


#6

Sometimes people play around with things (like herald/owners), and then try to hide them. There could be some other object types too.


#7

Hi @avivey, et al.,
just to follow-up on the above, this was not an issue with git repositories or inaccessible maniphest tasks mentioned in commit messages after all.

The default view policy of Differential was configured to “Subscribers” (instead of the default value of “All Users”). I was able to submit reviews via arc diff without issues once I fixed that.

So I’d split this into two issues

  1. UX: arcanist did not indicate the root cause - it mentions “selected view policy”, perhaps a hint to “default view policy” would be more helpful
  2. Bug: I did add myself as subscriber when submitting the diff and it had no effect (when Differential was using “Subscribers” as default view policy

Reproduction steps for the latter one:

  1. configure Differential application’s default view policy to “Subscribers”
  2. try to submit a new diff via arc diff while adding yourself as subscriber

Expected result: create a diff for review with yourself as subscriber.

Actual result: fail to create diff with error:

ERR-CONDUIT-CORE: Validation errors:
  - The selected view policy excludes you. Choose a view policy which allows you to view the object.