Page MenuHomePhabricator

Breaking UserConduitAPIMethod.php error
Closed, ResolvedPublic

Description

Hi,

Today 3 members of our ~6 person dev team started seeing this exception when running any arcanist command that interacted with the phabricator service:

➜  web git:(master) ✗ arc branch --trace
libphutil loaded from '/Users/eric/code/libphutil/src'.
arcanist loaded from '/Users/eric/code/arcanist/src'.
Config: Reading user configuration file "/Users/eric/.arcrc"...
Config: Did not find system configuration at "/etc/arcconfig".
Working Copy: Reading .arcconfig from "/Users/eric/code/web/.arcconfig".
Working Copy: Path "/Users/eric/code/web" is part of `git` working copy "/Users/eric/code/web".
Working Copy: Project root is at "/Users/eric/code/web".
Config: Did not find local configuration at "/Users/eric/code/web/.git/arc/config".
Loading phutil library from '/Users/eric/code/web/support/arcanist/minitest_test_engine'...
>>> [0] <conduit> user.whoami() <bytes = 117>
>>> [1] <http> https://work.r23s.net/api/user.whoami
<<< [1] <http> 315,681 us
<<< [0] <conduit> 315,926 us

[2015-05-14 20:30:05] EXCEPTION: (ConduitClientException) ERR-CONDUIT-CORE: Attempting to access attached data on PhabricatorUser (via getAwayUntil()), but the data is not actually attached. Before accessing attachable data on an object, you must load and attach it.

Data is normally attached by calling the corresponding needX() method on the Query class when the object is loaded. You can also call the corresponding attachX() method explicitly. at [<phutil>/src/conduit/ConduitFuture.php:58]
arcanist(head=master, ref.master=c6fa42b9c5c0), minitest-test-engine(), phutil(head=master, ref.master=dc4b8571f975)
  #0 ConduitFuture::didReceiveResult(array) called at [<phutil>/src/future/FutureProxy.php:60]
  #1 FutureProxy::getResult() called at [<phutil>/src/future/FutureProxy.php:37]
  #2 FutureProxy::resolve() called at [<phutil>/src/conduit/ConduitClient.php:58]
  #3 ConduitClient::callMethodSynchronous(string, array) called at [<arcanist>/src/workflow/ArcanistWorkflow.php:344]
  #4 ArcanistWorkflow::authenticateConduit() called at [<arcanist>/scripts/arcanist.php:349]

We were running a ~week old release of phabricator, then upgraded to master (ie b34d5bf44ba96b7b11d7a72e1056a979406b3e93), and all of us ran arc upgrade. The problem persisted until someone made this hacky patch, which fixed the problem:

ubuntu@work:/var/app/phabricator$ git diff
diff --git a/src/applications/people/conduit/UserConduitAPIMethod.php b/src/applications/people/conduit/UserConduitAPIMethod.php
index 82da171..4804780 100644
--- a/src/applications/people/conduit/UserConduitAPIMethod.php
+++ b/src/applications/people/conduit/UserConduitAPIMethod.php
@@ -48,11 +48,13 @@ abstract class UserConduitAPIMethod extends ConduitAPIMethod {

     // TODO: Modernize this once we have a more long-term view of what the
     // data looks like.
+    /*
     $until = $user->getAwayUntil();
     if ($until) {
       $return['currentStatus'] = 'away';
       $return['currentStatusUntil'] = $until;
     }
+    */

     return $return;
   }

If it's any help, here's my arc version post-upgrade (which wasn't working before we made the patch):

➜  ~  arc --version
arcanist c6fa42b9c5c07f79d4b76f91b0378b9d9ffa7a00 (14 May 2015)
libphutil dc4b8571f97515f30eed334f94142f7d1f761674 (14 May 2015)

After making the patch, all functionality has resumed working properly.

Best,
Pavel

Revisions and Commits

Event Timeline

pavelmk raised the priority of this task from to Needs Triage.
pavelmk updated the task description. (Show Details)
pavelmk added a project: Phabricator.
pavelmk added a subscriber: pavelmk.

Should be fixed in HEAD. Thanks for the report!