rsconnect-python icon indicating copy to clipboard operation
rsconnect-python copied to clipboard

deploy fails to redeploy due to global config

Open tdstein opened this issue 10 months ago • 0 comments

Replaces https://github.com/posit-dev/connect/issues/30437

System details

OS Version :  OSX Sonoma

Problem Statement

Creating it as a "bug" because it could be perceived as one from the users.

Steps to Reproduce

  1. Deploy an application (I'm using a streamlit dashboard, but shouldn't matter)
    • The application is deployed with an ID, for example: 87a2d580-58fd-4e85-9027-c7946958806c
  2. Delete the application
    • Removed application 87a2d580-58fd-4e85-9027-c7946958806c ("main")
  3. Deploy the same application again
    • The deploy fails with an error: Posit Connect reported an error (calling /__api__/applications/87a2d580-58fd-4e85-9027-c7946958806c): The requested object does not exist.

Actual Behavior

The deploy fails because it tries to reuse an application that was deleted.

This happens even when the user deletes the rsconnect-python directory from the application itself.

That is caused by rsconnect-python saving a global state in /Users/{ME}/Library/Application Support/rsconnect-python where the application ID is stored.

There are 3 problems that I see:

  1. The user is unable to deploy the application again after deleting it
  2. rsconnect-python behaviour is different based on the computer where it gets run as the global state is different
  3. Moving the project directory around causes a mismatch between the global state and the project state (because the global state stores the PATH) even though the project is the same and its state didn't change.

Expected Behavior

  • Doing the deploy again succeeds and creates a new application
  • There is no global state.
    • I think it's perfectly reasonable to store the state in the application itself (as it already does within the $PROJECT_DIR/rsconnect-python subdirectory) so that it can be committed.

tdstein avatar Mar 18 '25 16:03 tdstein