<p><code>-reindex-chainstate</code> is an instant operation: it wipes a the chainstate (UTXO) database. It is performed at startup whenever the <code>-reindex-chainstate</code> command-line option, or the <code>reindex-chainstate=1</code> config file parameter is provided. It cannot be interrupted, but it is so fast this is rarely a concern. It's equivalent to emptying the <code>chainstate/</code> directory by hand, FWIW.</p>
<p>Whenever the chainstate is behind the blockchain (i.e., you have blocks in your <code>blocks/</code> directory which haven't been processed yet), the missing blocks will automatically be processed. This will typically happen after a <code>-reindex</code> or <code>-reindex-chainstate</code>, but it can happen outside of those too. E.g. when you wipe the <code>chainstate/</code> directory yourself, or maybe if restore it to an older backup without making the equivalent restoration of the <code>blocks/</code> directory.</p>
<p>The naming of these options is somewhat confusing, because what they trigger isn't the actual reindexing, but just the wiping that preceeds it; the reindex is automatic, and progressive (it will continue where it left off if you shutdown and start again, unless you specify the reindex option again at startup; in that case, it is wiped again and you'll start over again).</p>
<p>FWIW, any option, including these, can be disabled using the &quot;no&quot; variant (<code>-noreindex-chainstate</code> here) or passing 0 (<code>-reindex-chainstate=0</code>). But, as explained, that just disables the wiping; it cannot undo a wipe, and thus cannot &quot;abort&quot; the reindexing, as Bitcoin Core cannot proceed without first processing all the blocks it has.</p>

CC BY-SA 4.0
2021-10-31T17:01:42.957Z
2021-10-31T17:01:42.957Z
Pieter Wuille
<p>In -help, -reindex-chainstate doesn't advertise to be an assignable [string typed] argument.</p>
<p>This means it is a boolean argument.</p>
<p>Don't assign it zero. Remove it completely.</p>
<p>Cheers!</p>
<hr />
<p>Non assignable argument, boolean:</p>
<pre><code>  -reindex-chainstate
       Rebuild chain state from the currently indexed blocks. When in pruning
       mode or if blocks on disk might be corrupted, use full -reindex
       instead.
</code></pre>
<p>Assignable argument, type string, not boolean:</p>
<pre><code>  -settings=&lt;file&gt;
       Specify path to dynamic settings data file. Can be disabled with
       -nosettings. File is written at runtime and not meant to be
       edited by users (use bitcoin.conf instead for custom settings).
       Relative paths will be prefixed by datadir location. (default:
       settings.json)
</code></pre>

CC BY-SA 4.0
2021-09-30T07:09:20.867Z
removing lets it go on reindexing
jubel
CC BY-SA 4.0
2021-09-30T07:12:33.737Z
let it reindex completely, then command it to close normally, let it finish normally; then try again and it shouldn't reindex
Mercedes
CC BY-SA 4.0
2021-09-30T07:20:05.673Z
It does. Even after switching to ´-reindex´ and ´bitcoin-cli stop´.
jubel
CC BY-SA 4.0
2021-09-30T14:06:55.867Z
It's impossible to abort reindexing, because it is an instant operation. Passing `-reindex` or `-reindex-chainstate` wipes certain parts of the database, at startup. The actual reindexing is what follows: the process of rebuilding the databases. Bitcoind cannot operate without those databases.
Pieter Wuille
CC BY-SA 4.0
2021-09-30T22:44:15.683Z
seems to be right description according to src/init.cpp "// This is a no-op if we cleared the coinsviewdb with -reindex or -reindex-chainstate". Post it as a main answer?
Dbs are supposed to be edited finely record by record, and this measure would have been of help.
jubel
CC BY-SA 4.0
2021-10-31T17:02:07.607Z
This answer is also factually wrong; see my own answer.
Pieter Wuille
CC BY-SA 4.0
2021-11-01T21:21:07.843Z
@PieterWuille I just read, there is missing detail here, but I see nothing wrong.
Mercedes
CC BY-SA 4.0
2021-11-01T21:23:41.957Z
You're saying that setting it to zero doesn't work; that's false. `-reindex-chainstate=0` is exactly the same as not setting it at all, and is the opposite from `-reindex-chainstate` or `-reindex-chainstate=1`.
Pieter Wuille
CC BY-SA 4.0
2021-11-07T18:44:59.713Z
Yeah, it is a boolean argument. If it is assignable is only because Bitcoin accidentally wrongly made boolean arguments assignable.
Mercedes
CC BY-SA 4.0
2021-09-30T07:04:36.213Z
2021-09-30T07:04:36.213Z
Mercedes
<p>I made files re-accessible. Now we could return to a later, already synchronized state with the files. I tried to put <code>./bitcoind -reindex-chainstate=0</code>, also in a bitcoin.conf, also directly calling the conf. It goes on reindexing the chainstate.</p>

<blockchain><synchronization><bitcoin-cli><reindex><cli>
How can I -abort ./bitcoind -reindex-chainstate?
jubel
# How can I -abort ./bitcoind -reindex-chainstate?

(Asked by: username_0 on 2021-09-30)

I made files re-accessible. Now we could return to a later, already synchronized state with the files. I tried to put `./bitcoind -reindex-chainstate=0`, also in a bitcoin.conf, also directly calling the conf. It goes on reindexing the chainstate.

**Tags:** blockchain, synchronization, bitcoin-cli, reindex, cli


---

## 2 answers

### Answer by username_1 on 2021-10-31. Score: 1

`-reindex-chainstate` is an instant operation: it wipes a the chainstate (UTXO) database. It is performed at startup whenever the `-reindex-chainstate` command-line option, or the `reindex-chainstate=1` config file parameter is provided. It cannot be interrupted, but it is so fast this is rarely a concern. It's equivalent to emptying the `chainstate/` directory by hand, FWIW.

Whenever the chainstate is behind the blockchain (i.e., you have blocks in your `blocks/` directory which haven't been processed yet), the missing blocks will automatically be processed. This will typically happen after a `-reindex` or `-reindex-chainstate`, but it can happen outside of those too. E.g. when you wipe the `chainstate/` directory yourself, or maybe if restore it to an older backup without making the equivalent restoration of the `blocks/` directory.

The naming of these options is somewhat confusing, because what they trigger isn't the actual reindexing, but just the wiping that preceeds it; the reindex is automatic, and progressive (it will continue where it left off if you shutdown and start again, unless you specify the reindex option again at startup; in that case, it is wiped again and you'll start over again).

FWIW, any option, including these, can be disabled using the "no" variant (`-noreindex-chainstate` here) or passing 0 (`-reindex-chainstate=0`). But, as explained, that just disables the wiping; it cannot undo a wipe, and thus cannot "abort" the reindexing, as Bitcoin Core cannot proceed without first processing all the blocks it has.


---

### Answer by username_2 on 2021-09-30. Score: -1

In -help, -reindex-chainstate doesn't advertise to be an assignable [string typed] argument.

This means it is a boolean argument.

Don't assign it zero. Remove it completely.

Cheers!

---

Non assignable argument, boolean:

```
  -reindex-chainstate
       Rebuild chain state from the currently indexed blocks. When in pruning
       mode or if blocks on disk might be corrupted, use full -reindex
       instead.

```

Assignable argument, type string, not boolean:

```
  -settings=<file>
       Specify path to dynamic settings data file. Can be disabled with
       -nosettings. File is written at runtime and not meant to be
       edited by users (use bitcoin.conf instead for custom settings).
       Relative paths will be prefixed by datadir location. (default:
       settings.json)

```

> **Comments:**
> **username_0**: removing lets it go on reindexing  
> **username_2**: let it reindex completely, then command it to close normally, let it finish normally; then try again and it shouldn't reindex  
> **username_0**: It does. Even after switching to ´-reindex´ and ´bitcoin-cli stop´.  
> **username_1**: It's impossible to abort reindexing, because it is an instant operation. Passing `-reindex` or `-reindex-chainstate` wipes certain parts of the database, at startup. The actual reindexing is what follows: the process of rebuilding the databases. Bitcoind cannot operate without those databases.  
> **username_0**: seems to be right description according to src/init.cpp "// This is a no-op if we cleared the coinsviewdb with -reindex or -reindex-chainstate". Post it as a main answer? Dbs are supposed to be edited finely record by record, and this measure would have been of help.  
> **username_1**: This answer is also factually wrong; see my own answer.  
> **username_2**: @username_1 I just read, there is missing detail here, but I see nothing wrong.  
> **username_1**: You're saying that setting it to zero doesn't work; that's false. `-reindex-chainstate=0` is exactly the same as not setting it at all, and is the opposite from `-reindex-chainstate` or `-reindex-chainstate=1`.  
> **username_2**: Yeah, it is a boolean argument. If it is assignable is only because Bitcoin accidentally wrongly made boolean arguments assignable.  

---

