@@ -406,43 +406,59 @@ private function updateBuildable(HarbormasterBuildable $buildable) {
406
406
$ should_publish = $ did_update &&
407
407
$ new_status != HarbormasterBuildable::STATUS_BUILDING &&
408
408
!$ buildable ->getIsManualBuildable ();
409
- if ($ should_publish ) {
410
- $ object = id (new PhabricatorObjectQuery ())
411
- ->setViewer ($ viewer )
412
- ->withPHIDs (array ($ buildable ->getBuildablePHID ()))
413
- ->executeOne ();
414
-
415
- if ($ object instanceof PhabricatorApplicationTransactionInterface) {
416
- $ template = $ object ->getApplicationTransactionTemplate ();
417
- if ($ template ) {
418
- $ template
419
- ->setTransactionType (PhabricatorTransactions::TYPE_BUILDABLE )
420
- ->setMetadataValue (
421
- 'harbormaster:buildablePHID ' ,
422
- $ buildable ->getPHID ())
423
- ->setOldValue ($ old_status )
424
- ->setNewValue ($ new_status );
425
-
426
- $ harbormaster_phid = id (new PhabricatorHarbormasterApplication ())
427
- ->getPHID ();
428
-
429
- $ daemon_source = PhabricatorContentSource::newForSource (
430
- PhabricatorContentSource::SOURCE_DAEMON ,
431
- array ());
432
-
433
- $ editor = $ object ->getApplicationTransactionEditor ()
434
- ->setActor ($ viewer )
435
- ->setActingAsPHID ($ harbormaster_phid )
436
- ->setContentSource ($ daemon_source )
437
- ->setContinueOnNoEffect (true )
438
- ->setContinueOnMissingFields (true );
439
-
440
- $ editor ->applyTransactions (
441
- $ object ->getApplicationTransactionObject (),
442
- array ($ template ));
443
- }
444
- }
409
+
410
+ if (!$ should_publish ) {
411
+ return ;
412
+ }
413
+
414
+ $ object = id (new PhabricatorObjectQuery ())
415
+ ->setViewer ($ viewer )
416
+ ->withPHIDs (array ($ buildable ->getBuildablePHID ()))
417
+ ->executeOne ();
418
+ if (!$ object ) {
419
+ return ;
445
420
}
421
+
422
+ if (!($ object instanceof PhabricatorApplicationTransactionInterface)) {
423
+ return ;
424
+ }
425
+
426
+ // TODO: Publishing these transactions is causing a race. See T8650.
427
+ // We shouldn't be publishing to diffs anyway.
428
+ if ($ object instanceof DifferentialDiff) {
429
+ return ;
430
+ }
431
+
432
+ $ template = $ object ->getApplicationTransactionTemplate ();
433
+ if (!$ template ) {
434
+ return ;
435
+ }
436
+
437
+ $ template
438
+ ->setTransactionType (PhabricatorTransactions::TYPE_BUILDABLE )
439
+ ->setMetadataValue (
440
+ 'harbormaster:buildablePHID ' ,
441
+ $ buildable ->getPHID ())
442
+ ->setOldValue ($ old_status )
443
+ ->setNewValue ($ new_status );
444
+
445
+ $ harbormaster_phid = id (new PhabricatorHarbormasterApplication ())
446
+ ->getPHID ();
447
+
448
+ $ daemon_source = PhabricatorContentSource::newForSource (
449
+ PhabricatorContentSource::SOURCE_DAEMON ,
450
+ array ());
451
+
452
+ $ editor = $ object ->getApplicationTransactionEditor ()
453
+ ->setActor ($ viewer )
454
+ ->setActingAsPHID ($ harbormaster_phid )
455
+ ->setContentSource ($ daemon_source )
456
+ ->setContinueOnNoEffect (true )
457
+ ->setContinueOnMissingFields (true );
458
+
459
+ $ editor ->applyTransactions (
460
+ $ object ->getApplicationTransactionObject (),
461
+ array ($ template ));
446
462
}
447
463
448
464
private function releaseAllArtifacts (HarbormasterBuild $ build ) {
0 commit comments