# Juliaup configuration is locked by another process, waiting for it to unlock

**URL:** https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366
**Category:** General Usage
**Tags:** question, vscode, juliaup
**Created:** [October 16, 2024, 8:12am UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366 "2024-10-16T08:12:11Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)
#### Post date: [October 16, 2024, 8:12am UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/1 "2024-10-16T08:12:11Z")

</div>

Whenever I launch Julia in the bash terminal of VSCode in Ubuntu Linux I get the message:

```julia
Juliaup configuration is locked by another process, waiting for it to unlock.

```

What could be the reason?

---

<div class="post-metadata">

### Author: ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)
#### Post date: [October 16, 2024, 12:03pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/2 "2024-10-16T12:03:28Z")

</div>

You probably installed Julia through `juliaup`, the latter does show this message sometimes. I guess it tries to auto-update Julia or something?..  
Official binary downloads don’t do that, they just always start immediately.

---

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [October 16, 2024, 12:14pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/3 "2024-10-16T12:14:37Z")

</div>

Looks like [Unlock configuration file during download · Issue #435 · JuliaLang/juliaup · GitHub](https://github.com/JuliaLang/juliaup/issues/435)

Or maybe [Don't lock the juliaup config file when only reading · Issue #561 · JuliaLang/juliaup · GitHub](https://github.com/JuliaLang/juliaup/issues/561)

And see [this comment](https://github.com/JuliaLang/juliaup/issues/598#issuecomment-1517757366) for a potential workaround.

---

<div class="post-metadata">

### Author: ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)
#### Post date: [October 16, 2024, 12:30pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/4 "2024-10-16T12:30:51Z")

</div>

> [@aplavin](#):
>
> `juliaup`, the latter does show this message sometimes. I guess it tries to auto-update Julia or something

It does not always show this message. But I could not figure out yet when it does and when it doesn’t. Who might auto-update Julia? The VSCode language server? Or juliaup?

---

<div class="post-metadata">

### Author: ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)
#### Post date: [October 16, 2024, 2:15pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/5 "2024-10-16T14:15:34Z")

</div>

As far as I know juliaup doesn’t auto-update julia but it may auto-update itself and/or update the list of available julia releases.

---

<div class="post-metadata">

### Author: ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)
#### Post date: [October 16, 2024, 10:26pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/6 "2024-10-16T22:26:29Z")

</div>

Yes, Juliaup auto-updates itself and the list of available Julia versions. It will never update any Julia version itself without explicit opt-in from the user.

This locked message is annoying, I know how to fix it, just need to find the time to do it…

---

<div class="post-metadata">

### Author: ![jayprakashdav20](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jayprakashdav20/32/47150_2.png) [@jayprakashdav20](https://discourse.julialang.org/u/jayprakashdav20)
#### Post date: [June 9, 2026, 9:47am UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/7 "2026-06-09T09:47:22Z")

</div>

I am facing the same error now. My juliaup version is 1.20.4, julia version is 1.11.1 and operating system is Linux. Can someone suggest what is the working solution?

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [June 9, 2026, 11:12am UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/8 "2026-06-09T11:12:40Z")

</div>

On a Mac

```julia-auto
be@HPH-iMac-02 ~ % juliaup --version
Juliaup 1.20.1
be@HPH-iMac-02 ~ % juliaup self update
    Checking for new Julia versions
Checking for self-updates
Found new version 1.20.4 on channel release.
Juliaup configuration is locked by another process, waiting for it to unlock.
^C
be@HPH-iMac-02 ~ % juliaup self update
    Checking for new Julia versions
Checking for self-updates
Juliaup unchanged on channel 'release' - 1.20.4
be@HPH-iMac-02 ~ % 

```

The same thing was observed on my another Mac: [Juliaup cannot find Julia - #6 by Eben60](https://discourse.julialang.org/t/juliaup-cannot-find-julia/137462/6) - the `juliaup` self update apparently performed, but then the command stalled

---

<div class="post-metadata">

### Author: ![cdawg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cdawg/32/9811_2.png) [@cdawg](https://discourse.julialang.org/u/cdawg)
#### Post date: [June 9, 2026, 12:59pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/10 "2026-06-09T12:59:23Z")

</div>

First time Ive gotten this error after many years, so seems to be a juliaup blip with the last update. Works fine after restarting the computer.

---

<div class="post-metadata">

### Author: ![jayprakashdav20](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jayprakashdav20/32/47150_2.png) [@jayprakashdav20](https://discourse.julialang.org/u/jayprakashdav20)
#### Post date: [June 9, 2026, 3:16pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/11 "2026-06-09T15:16:43Z")

</div>

Thank you for your responses. Unfortunately, I could not restart the server as it is used by several other people. What worked in my case was to kill all the Julia processes across multiple servers (a single disk storage is shared among 3 different servers). The kill command I used is pkill -U username -f bin/julia.

---

<div class="post-metadata">

### Author: ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)
#### Post date: [June 9, 2026, 10:17pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/12 "2026-06-09T22:17:13Z")

</div>

It was a bug released, and already fixed, in juliaup

---

<div class="post-metadata">

### Author: ![sob](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@sob](https://discourse.julialang.org/u/sob)
#### Post date: [June 9, 2026, 10:53pm UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/13 "2026-06-09T22:53:59Z")

</div>

I solved it by `killall juliaup`

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [June 10, 2026, 4:42am UTC](https://discourse.julialang.org/t/juliaup-configuration-is-locked-by-another-process-waiting-for-it-to-unlock/121366/14 "2026-06-10T04:42:54Z")

</div>

See

> <https://github.com/JuliaLang/juliaup/pull/1517>
>
> Closes #435
> Closes #561
> Closes #1524
> 
> Existing draft PRs
> Closes #1238
> Clos…es #1317
> 
> Claude:
> 
> \---
> 
> Shrink the region covered by the global juliaup configuration lock so the network download/extract of a version no longer happens while the exclusive lock is held. The same pattern is now applied to every command that downloads:
> 
> \- \*\*\`add\`\*\* — splits the old \`install\_version\` into \`download\_version\_to\_temp\` (lock-free, network-bound) and \`commit\_version\_install\` (lock-held, fast rename + config write).
> \- \*\*\`self update\`\*\* — reads the configured channel under a brief shared lock, releases it, downloads juliaup with no lock held, then re-acquires the exclusive lock only to record the timestamp.
> \- \*\*\`update\`\*\* — two-phase: snapshot the config under a shared lock, download all needed channels lock-free (\`prepare\_channel\_update\`), then take the exclusive lock once to commit them all (\`commit\_channel\_update\`).
> \- \`update\_version\_db\` already followed this pattern.
> 
> In every case the commit phase re-checks the config (optimistic concurrency), so two processes acting on the same version/channel resolve cleanly (the loser discards its temp dir) rather than erroring.
> 
> Also:
> \- The "configuration is locked by another process, waiting for it to unlock" message now only prints if the lock can't be acquired within a 1s grace period, suppressing spurious messages during the millisecond-scale commit phase.
> \- Adds https://github.com/JuliaLang/juliaup/blob/ib%2Freduce\_lock/devdocs/locking\_and\_update\_flows.md documenting the lock model and per-command flows with diagrams.
> 
> Together these eliminate the long-lock-across-network pathology in the launcher's background daemon path (it spawns \`self update\` / versiondb update), which was the cause of the spurious lock stalls in #1524.
> 
> How this honors the discussion (#435, #561):
> \- Implements davidanthoff's proposed design from #435: read config + release lock, download, then re-acquire and commit, instead of holding the write lock for the whole download.
> \- Honors LilithHafner's refinement: the commit phase re-checks whether the install is still needed.
> \- Keeps StefanKarpinski's shared/exclusive model: many readers coexist and only block for the millisecond-scale commit, not for a multi-minute download.
> 
> Benefit over the other open PRs:
> \- vs #1238 (remove file locking entirely): juliaup performs multi-file operations (install dir + config + symlinks) that a single-file atomic rename cannot keep consistent. This retains the lock for cross-file consistency while still eliminating the long-lock pathology #1238 targets.
> \- vs #1317 (close config files right after read): complementary — that PR shortens how long handles stay open; this shortens how long the exclusive lock is held during the download.

and the issues linked there.
