diff --git a/distributed/dashboard/components/scheduler.py b/distributed/dashboard/components/scheduler.py index 86295d06d77..8a013fbb5fa 100644 --- a/distributed/dashboard/components/scheduler.py +++ b/distributed/dashboard/components/scheduler.py @@ -56,7 +56,7 @@ ProfileTimePlot, SystemMonitor, ) -from distributed.dashboard.utils import PROFILING, transpose, update +from distributed.dashboard.utils import BOKEH_VERSION, PROFILING, transpose, update from distributed.diagnostics.graph_layout import GraphLayout from distributed.diagnostics.progress_stream import color_of, progress_quads from distributed.diagnostics.task_stream import TaskStreamPlugin @@ -1944,14 +1944,17 @@ def __init__(self, scheduler, **kwargs): self.edge_source = ColumnDataSource({"x": [], "y": [], "visible": []}) node_view = CDSView( - source=self.node_source, filters=[GroupFilter(column_name="visible", group="True")], ) edge_view = CDSView( - source=self.edge_source, filters=[GroupFilter(column_name="visible", group="True")], ) + # Bokeh >= 3.0 automatically infers the source to use + if BOKEH_VERSION.major < 3: + node_view.source = self.node_source + edge_view.source = self.edge_source + node_colors = factor_cmap( "state", factors=["waiting", "processing", "memory", "released", "erred"], diff --git a/distributed/dashboard/utils.py b/distributed/dashboard/utils.py index ce83f600f3d..3c077e7a2da 100644 --- a/distributed/dashboard/utils.py +++ b/distributed/dashboard/utils.py @@ -1,7 +1,9 @@ from numbers import Number +import bokeh from bokeh.core.properties import without_property_validation from bokeh.io import curdoc +from packaging.version import parse as parse_version from tlz.curried import first try: @@ -9,6 +11,7 @@ except ImportError: np = None # type: ignore +BOKEH_VERSION = parse_version(bokeh.__version__) PROFILING = False