Skip to content

Version 1.67 broke my code #814

@emilianomm

Description

@emilianomm

Describe the bug

Hi. Just wanted to report that my previously working code started to fail since future 1.67. The code runs inside a databricks scheduled job that pulls the newest version of the package every time it runs. This job started failing just after the 1.67 update. I can confirm that it runs successfully with the default version installed on the Databricks Runtime (i.e future 1.38) and everything else constant.

Here is the exact error message:

Error : future::evalFuture() failed on 1229-16200004-99lhyj44gy-10-1-12-13 (pid 44) at 2025-11-24T22:40:27. Using package 'future' v1.68.0. Possible other reasons: cannot change working directory

Reproduce example

A reproducible example using R code.

library(tidyverse)
library(bigrquery)

# Create a generic example dataset
set.seed(123)
example_data <- tibble(
  group1 = rep(letters[1:3], each = 5),
  group2 = rep(LETTERS[1:2], times = 8),
  value = rnorm(15)
)

# Split data by groups
data_chunks <- example_data %>%
  group_by(group1, group2) %>%
  group_split()

tbl_bq <- bq_table(
  "my_project",
  "my_dataset",
  "my_table"
)

bq_table_create(
  tbl_bq,
  as_bq_fields(example_data)
)

# Set up parallel processing
future::plan(future::multisession, workers = future::availableCores() - 1)


# Walk over chunks in parallel
furrr::future_walk(
  data_chunks,
  function(chunk) {
    bq_auth(path = path)
    bq_table_upload(
      table = tbl_bq,
      data = distinct(chunk),
      write_disposition = "WRITE_APPEND"
    )
  }
)

# Reset plan to sequential after
future::plan(future::sequential)

Expected behavior

Run as before future 1.67

Session information
Since the error was not raised in an interactive session, I can not provide session info. Anyway I am able to provide the following details:

  1. It runs inside Azure Databricks with 17.3 Runtime
  2. It pulls latest version of the future package using databricks's built in package manager (Which is based on posit package manager) at cluster level
  3. The MRE should give you a pretty accurate idea of what is being loaded in the session. Note that for future as well furrr I use only qualified names thus not importing the package with library()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions