JavaScript Exception thrown when moving task on workboard to an empty column

#1

This bug has been around for quite sometime but we’ve only just found steps to reproduce it.

Observed Behavior:
Unable to drag tasks on work board to empty columns.
On a work board, when dragging a task from a column to a column that is empty a JavaScript exception is thrown:

Uncaught TypeError: Cannot read property 'getAttribute' of null
    at Function.getData (core.pkg.js:166)
    at result._onmovecard (WorkboardBoard.js:36)
    at result.<anonymous> (core.pkg.js:69)
    at Function.pass (core.pkg.js:153)
    at Function._dispatchProxy (core.pkg.js:148)
    at Function.invoke (core.pkg.js:91)
    at result.proto.invoke (core.pkg.js:67)
    at result._drop (core.pkg.js:1347)
    at result._ondrop (core.pkg.js:1343)
    at Function.pass (core.pkg.js:153)

The task remains dim and cannot be moved. Other tasks cannot be moved until the page is refreshed.

We can work around the problem by moving a task into a column via the task page so at least one task is in the column.

This occurs on project workboards and sub project workboards.

Expected Behavior:
The task should successfully move to the new column and the interface should become available to move other tasks.

Phabricator Version:

phabricator 40af472ff59517258005bd2e8c06ec5ddd68d4d7 (Mar 10 2019)
arcanist 9830c9316d38988b2dc283ac1a124b73bc8e6c5f (Mar 8 2019)
phutil 6c64dce5f71c146204f9a40d084aabf77557d426 (Mar 8 2019)
sprint 906b3b57db58d60fa2ced25c3afe97e24f425b79 (Mar 29 2018)
php 7.1.27-1+ubuntu16.04.1+deb.sury.org+1 diff 3.3 at /usr/bin/diff
git 2.7.4 at /usr/bin/git
hg 3.7.3 at /usr/bin/hg
pygmentize 2.1 at /usr/bin/pygmentize
svn 1.9.3 at /usr/bin/svn

My browser: Version 73.0.3683.86 (Official Build) (64-bit)

Reproduction Steps:
Open a workboard that contains an empty column and attempt to drag a task from a column into the empty column.

#2

I’m unable to reproduce this. Here’s what I did:

I created a new column on a workboard called “New Empty Column”:

Then, I dragged a task into it:

This worked without any issues.

#3

I also retried this in Chrome (the screenshots above are from Safari) and got the same results. I don’t think you actually mention that you’re using Chrome in your post anywhere, but it’s the only major browser that this version number makes sense on, I think.

#4

Apologies - yes that version number is for Chrome.

This occurs on Safari and Chrome for our install. Interestingly, I just tried a different install and did not run into the same problem. I’ll investigate further and report anything I find here.

Thanks @epriestley

#5

Our install includes an extension that might be exposing this issue, however it doesn’t appear the error is within any of the extension code. I am guessing here since the extension does track which column the tasks are in. I am not getting any useful information about what has registered for the following callback and I’m not familiar with Phabricator’s structure (and how extensions are loaded etc) to find out more.

The error is a result of:

var header_key = JX.Stratcom.getData(after_node).headerKey;

/res/defaultX/phabricator/a4f1e85d/rsrc/js/application/projects/WorkboardBoard.js:_onmovecard where after_node is null.

Going up the callstack I see this is invoking with:

target_list.invoke('didDrop', dragging, target, this);

Within the getData function from JX.install('Stratcom'... in /res/defaultX/phabricator/b96c872e/core.pkg.js node is used without being checked.

Could this be a bug in Phabricator that has not been noticed before since there aren’t any core or supported packages that register for didDrop?