Page MenuHomeDevCentral

Trying to get property of non-object in PhabricatorStory::getRepositoryPHID
Open, LowPublic

Description

D564 has a view policy restricting it temporarily.

The notification fired when I changed this view policy triggers the following bug when Phabricator tries to get the repository of the diff (to further get the repositories' projects and sort the notification into the right group).

The fact Phabricator fires this notifications at first is disputable and should be reported upstream as a security issue. [Update: upstream considers this as acceptable in the current state of feed.http_hooks.]

But independently of the Phabricator issue, when we don't have access to an object, we should fail gracefully and perhaps use the default group as fallback.

Payload

{"storyID":"8485","storyType":"PhabricatorApplicationTransactionFeedStory","storyData":{"objectPHID":"PHID-DREV-iqc4ipnohzrpzfoav7vt","transactionPHIDs":{"PHID-XACT-DREV-yc3h2xufxxu3pmq":"PHID-XACT-DREV-yc3h2xufxxu3pmq"}},"storyAuthorPHID":"PHID-USER-fnetlprx7zdotfm2hdrz","storyText":"dereckson changed the visibility for D564: WIP: start documentation.","epoch":"1469410725"}

Error log

[2016-07-31 23:01:48] production.INFO: [Gate] New payload. {"service":"Phabricator","door":"Nasqueron"} 
[2016-07-31 23:01:49] production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object' in /var/wwwroot/default/app/Phabricator/
PhabricatorStory.php:176
Stack trace:
#0 /var/wwwroot/default/app/Phabricator/PhabricatorStory.php(176): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Trying to get p...', '/var
/wwwroot/de...', 176, Array)
#1 /var/wwwroot/default/app/Phabricator/PhabricatorStory.php(135): Nasqueron\Notifications\Phabricator\PhabricatorStory->getRepositoryPHID('differential.qu...'
)
#2 /var/wwwroot/default/app/Phabricator/PhabricatorStory.php(247): Nasqueron\Notifications\Phabricator\PhabricatorStory->getProjectsPHIDs()
#3 /var/wwwroot/default/app/Phabricator/PhabricatorStory.php(235): Nasqueron\Notifications\Phabricator\PhabricatorStory->attachProjects()
#4 /var/wwwroot/default/app/Analyzers/Phabricator/PhabricatorPayloadAnalyzer.php(118): Nasqueron\Notifications\Phabricator\PhabricatorStory->getProjects()
#5 /var/wwwroot/default/app/Notifications/PhabricatorNotification.php(61): Nasqueron\Notifications\Analyzers\Phabricator\PhabricatorPayloadAnalyzer->getGroup()
#6 /var/wwwroot/default/app/Notifications/PhabricatorNotification.php(38): Nasqueron\Notifications\Notifications\PhabricatorNotification->getGroup()
#7 /var/wwwroot/default/app/Jobs/FirePhabricatorNotification.php(52): Nasqueron\Notifications\Notifications\PhabricatorNotification->__construct('Nasqueron', O
bject(Nasqueron\Notifications\Phabricator\PhabricatorStory))
#8 /var/wwwroot/default/app/Jobs/FirePhabricatorNotification.php(38): Nasqueron\Notifications\Jobs\FirePhabricatorNotification->createNotification()
#9 /var/wwwroot/default/app/Listeners/NotificationListener.php(48): Nasqueron\Notifications\Jobs\FirePhabricatorNotification->handle()
#10 [internal function]: Nasqueron\Notifications\Listeners\NotificationListener->onPhabricatorPayload(Object(Nasqueron\Notifications\Events\PhabricatorPayloadE
vent))
[…]

Event Timeline

dereckson changed the visibility from "Public (No Login Required)" to "Nasqueron security operations squad (Project)".
dereckson updated the task description. (Show Details)
dereckson changed the visibility from "Nasqueron security operations squad (Project)" to "Public (No Login Required)".
dereckson updated the task description. (Show Details)
dereckson updated the task description. (Show Details)
dereckson removed a subscriber: Sandlayth.