treeverse / treeverse/dvc

dvc status: shows that params have changed when they haven't

Open
#9,518 6 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug p3-nice-to-have
Dominant language
Python
Stars
15.9k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

Bug Report

dvc status shows that params have changed when they haven't

Description

After reproducing a pipeline successfully, where each stage is using the params field and running "dvc status", I get the same message saying that I have a change in my deps with the tag "new" pointing to every parameter file on each stage. When running "dvc repro" again when no changes have happened, it doesn't run the pipeline again, but with a message on each stage that it is using the cached version. When a collaborator pulls the same commit, the pipeline runs one more time (assuming the collaborator doesn't have any cached data). I guess this should not be the expected behaviour. For what I know so far, it should return a message in the style "pipeline up to date", and no execution happening.

Reproduce
  1. dvc repro
  2. dvc status
Expected

I expect dvc to print a message informing that everything is up to date. Furthermore, I expect this to happen when a collaborator clones the project, pulls the data from remotes and executes dvc status

Environment information

Output of dvc status:

$ dvc status
data_extraction_tags:
        changed deps:
                new:                config/Data_Extraction.yaml
data_extraction_image:
        changed deps:
                new:                config/Data_Extraction.yaml
data_merging:
        changed deps:
                new:                config/Data_Merging.yaml

Additional Information (if any):

This would be the dvc.yaml content I am using in the project:

stages: 
    data_extraction_tags:
        cmd: python -m src.data_extraction.data_extraction --env=./config/.env --config=./config/Data_Extraction.yaml --query_name_param=query_tags_name --query_param=query_tags --query_scheme_param=scheme_tags
        deps:
            - ./src/data_extraction/data_extraction.py
        params:
            - ./config/Data_Extraction.yaml:
                - pathData
                - query_tags_name
                - query_tags
                - scheme_tags
        vars:
            - ./config/Data_Extraction.yaml:query_tags_name
            - ./config/Data_Extraction.yaml:pathData
        outs:
            - ${pathData}/${query_tags_name}.parquet.gzip
            
    data_extraction_image:
        cmd: python -m src.data_extraction.data_extraction --env=./config/.env --config=./config/Data_Extraction.yaml --query_name_param=query_images_name --query_param=query_images --query_scheme_param=scheme_images
        deps:
            - ./src/data_extraction/data_extraction.py
        params:
            - ./config/Data_Extraction.yaml:
                - pathData
                - query_images_name
                - query_images
                - scheme_images
        vars:
            - ./config/Data_Extraction.yaml:query_images_name
            - ./config/Data_Extraction.yaml:pathData
        outs:
            - ${pathData}/${query_images_name}.parquet.gzip

    data_merging:
        cmd: python -m src.data_preparation.data_merging --config=./config/Data_Merging.yaml
        deps:
            - ./src/data_preparation/data_merging.py
            - ${pathDataRaw}
        params:
            - ./config/Data_Merging.yaml:
        vars:
            - ./config/Data_Merging.yaml:pathDataRaw
            - ./config/Data_Merging.yaml:pathDataMerged
        outs:
            - ${pathDataMerged}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the behavior with the shown dvc.yaml and parameter files by running dvc repro followed by dvc status, then repeat after obtaining the project data as a collaborator would. Start at the dvc status and dvc repro entry points; done means unchanged parameter files are not reported as new dependencies and status reports the pipeline as up to date.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-engineering, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.