Broken Dashboard when creating a Differential Changesets Query Panel

Hello everyone!

I want to note that when creating a Dashboard you may be able to crash it, and you may not be able to edit or delete it from the UI anymore.

Here my reproducible steps:

  1. Create a new Dashboard
  2. Create a new Panel of kind “Query Panel”
  3. “Search for” field set to “Differential Changesets”
  4. Create the Panel

Now you should see:

Unhandled Exception ("PhutilMethodNotImplementedException")
Method getURI in class DifferentialChangesetSearchEngine is not implemented!

You can see the result here:
https://web.archive.org/web/20191115212326/https://gitpull.it/dashboard/view/2/

I’m using latest stable Phabricator I think.
be2b8f4bcb62deb953049debacfbc7dca2e6edef (Thu, Oct 31) .

I think tomorrow I will try to delete the Dashboard from the command line using the right way.

This should already be fixed in master and stable by https://secure.phabricator.com/D20902 (Nov 8th).

1 Like

Thank you.

Also https://secure.phabricator.com/T13443 is interesting.

After looking at how the T13443 was resolved (disabling the feature), I was able to workaround my problem allowing the generation of that kind of panels, with this patch:

From 3bdd547035cca98dc13000db643844f0a01aed77 Mon Sep 17 00:00:00 2001
From: Valerio Bozzolan <boz@reyboz.it>
Date: Sat, 16 Nov 2019 06:33:23 +0000
Subject: [PATCH] avoid Panel crash when creating a Differential Changesets
 Query Panel

---
 .../differential/query/DifferentialChangesetSearchEngine.php | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/applications/differential/query/DifferentialChangesetSearchEngine.php b/src/applications/differential/query/DifferentialChangesetSearchEngine.php
index 0dfec94a5..5c8b9aeec 100644
--- a/src/applications/differential/query/DifferentialChangesetSearchEngine.php
+++ b/src/applications/differential/query/DifferentialChangesetSearchEngine.php
@@ -47,7 +47,10 @@ final class DifferentialChangesetSearchEngine
       return '/differential/diff/'.$diff->getID().'/changesets/'.$path;
     }
 
-    throw new PhutilMethodNotImplementedException();
+    // @see https://secure.phabricator.com/T13443
+    return '#/differential/diff/-missing-diff-';
+
+    //throw new PhutilMethodNotImplementedException();
   }
 
   protected function getBuiltinQueryNames() {
-- 
2.20.1