Skip to content

Prepare for Dask 2.3.0 release - #171

Merged
jrbourbeau merged 7 commits into
dask:masterfrom
jrbourbeau:test-master
Aug 16, 2019
Merged

Prepare for Dask 2.3.0 release#171
jrbourbeau merged 7 commits into
dask:masterfrom
jrbourbeau:test-master

Conversation

@jrbourbeau

Copy link
Copy Markdown
Member

This is just to check that things work with the current master branch of dask/dask and dask/distributed prior to releasing 2.3.0 upstream.

I think the CI already runs against upstream master branches, so I've included a trivial change to the README to trigger CI

Comment thread dask_kubernetes/core.py Outdated
@jrbourbeau

Copy link
Copy Markdown
Member Author

It appears there's some interesting caching-related behavior happening with the CI. The normal build triggered when I push a commit times out (ref https://circleci.com/gh/dask/dask-kubernetes/394) while if I rebuild the job without a cache the CI completes (ref https://circleci.com/gh/dask/dask-kubernetes/395). Will look into this more tomorrow

@TomAugspurger

Copy link
Copy Markdown
Member

I wonder if your cached builds are ending up with different versions of dask / distributed on the workers vs. the scheduler. I think the scheduler image is built against master, while the workers are from the cached conda env.

@mrocklin

Copy link
Copy Markdown
Member

The errors in the most recent CI build are definitely due to a mismatch in versions between scheduler and worker. We added the extra attribute recently.

@mrocklin

Copy link
Copy Markdown
Member

This failure seems possibly more concerning

Traceback (most recent call last):
  File "/home/circleci/miniconda/envs/dask-kubernetes-test/lib/python3.7/site-packages/tornado/ioloop.py", line 743, in _run_callback
    ret = callback()
  File "/home/circleci/miniconda/envs/dask-kubernetes-test/lib/python3.7/site-packages/tornado/ioloop.py", line 767, in _discard_future_result
    future.result()
  File "/home/circleci/miniconda/envs/dask-kubernetes-test/lib/python3.7/site-packages/distributed/deploy/adaptive_core.py", line 182, in adapt
    recommendations = await self.recommendations(target)
  File "/home/circleci/miniconda/envs/dask-kubernetes-test/lib/python3.7/site-packages/distributed/deploy/adaptive_core.py", line 133, in recommendations
    plan = self.plan
  File "/home/circleci/miniconda/envs/dask-kubernetes-test/lib/python3.7/site-packages/distributed/deploy/adaptive.py", line 104, in plan
    return set(self.cluster.workers)
TypeError: unhashable type: 'V1Pod'

We recently changed adaptive to track sets of launched workers (plan/requested) and a set of arrived workers (observed). We implement those for most clusters here:

https://github.com/dask/distributed/blob/6302175056742d101b8af52336bc6bbf4227da35/distributed/deploy/adaptive.py#L99-L112

Currently these are expected to get a collection that is keyed by worker name in order to handle comparisons. One solution would be to specify the worker name as we launch a pod, and keep that name->pod mapping around.

@mrocklin

Copy link
Copy Markdown
Member

As an alternative, we might also ...

  1. change requirements in dask-kubernetes to avoid the newest release for now
  2. bring back the old Adaptive code into this library

@mrocklin

Copy link
Copy Markdown
Member

In case we want to go with option 2, the PR that made this change is here: dask/distributed#2904

We would probably walk one commit back from there, copy the adaptive.py file into here, and then overwrite the adapt method to use that class rather than the one in distributed (there is an Adaptive= keyword we can use).

@jrbourbeau

Copy link
Copy Markdown
Member Author

@mrocklin thanks for all the feedback. Do you have a preference for any of the three options? You're more familiar with the current development practices of dask-kubernetes.

For context, is option 2 intended to be a workaround until a more long term fix for plan/requested/observed is added?

@mrocklin

Copy link
Copy Markdown
Member

They're all workarounds. I think that option 2 is probably the most straightforward for someone not familiar with Kubernetes to handle quickly (I hope).

@jrbourbeau

Copy link
Copy Markdown
Member Author

Alright, I'll give option 2 a go

@mrocklin

mrocklin commented Aug 15, 2019 via email

Copy link
Copy Markdown
Member

@jrbourbeau

Copy link
Copy Markdown
Member Author

Agreed, knowledge transfer is definitely a good thing. Thanks for guiding here.

@jrbourbeau

Copy link
Copy Markdown
Member Author

Came across a configuration setting change in dask/dask that impacted dask_kubernetes/tests/test_core.py::test_maximum. I fixed the issue here and raised an issue upstream (ref dask/dask#5282)

@jrbourbeau

Copy link
Copy Markdown
Member Author

CI is passing now

FWIW I'm in favor of keeping the removal of CI caching. The conda environment setup doesn't seem to take that long (~90 seconds) and caching is causing some issues with this and other PRs (ref https://circleci.com/gh/dask/dask-kubernetes/396). That said, I will add it back if other feel differently.

@TomAugspurger

TomAugspurger commented Aug 15, 2019 via email

Copy link
Copy Markdown
Member

@jacobtomlinson

Copy link
Copy Markdown
Member

This all looks reasonable to me. Thanks for picking this up.

Are we ready to go with this?

@jrbourbeau

Copy link
Copy Markdown
Member Author

I think so. @mrocklin any comments or concerns?

@mrocklin

Copy link
Copy Markdown
Member

Yes, this seems fine to me

@jrbourbeau

Copy link
Copy Markdown
Member Author

Great, merging then. Thanks all for reviewing!

@jrbourbeau
jrbourbeau merged commit d2ae18a into dask:master Aug 16, 2019
@jrbourbeau
jrbourbeau deleted the test-master branch August 16, 2019 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants