You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] health_check.bat creates a stray empty directory (e.g. C:\Program) when the install path contains a space #18177
I searched in the issues and found nothing similar.
Version
Reproduced on 2.0.8 and current master (identical code). Present since the tool was introduced (#12325); not addressed by #12435 (launch scripts) or #12450 (permission-detection logic).
Environment:
OS: Windows (reproduces wherever the install path contains a space)
IoTDB: 2.0.8 and master
Describe the bug and provide the minimal reproduce step
On Windows, if IoTDB is located under a path that contains a space (e.g. C:\Program Files\iotdb), the health-check tool's Installation Environment(Directory Access) check splits directory paths at the space. It:
creates a stray empty directory such as C:\Program, and
prints garbled results - e.g. "C:\Program" has write permission followed by "Files\...\ext\pipe" has write permission - instead of one line for the real directory.
To reproduce:
Unzip/install IoTDB into a path containing a space, e.g. C:\Program Files\iotdb (or C:\test dir\iotdb).
Run tools\windows\ops\health_check.bat -o local.
Observe a stray empty C:\Program directory, and split/garbled lines in the Directory Access section.
Any configured directory under the spaced install path triggers it; the ext/* dirs (pipe_lib_dir / udf_lib_dir / trigger_lib_dir) hit it by default because they resolve to %IOTDB_HOME%\ext\....
:local_dirs_check joins the directory variables into spacedirs with spaces and iterates with for %%a in (%spacedirs%). The for ... in (set) form tokenizes on spaces (and ,/;), so a path containing a space is split into two
tokens. The inner for %%b/%%c loops already preserve spaces for the ;/, multi-dir separators via the "!var:;=" "!" technique, but the outer space-join defeats that. Separately, %%c (from for %%c in ("...")) still carries its
surrounding quotes, so mkdir "%%c" expands to mkdir ""C:\Program Files\..."" - a doubly-quoted path the argument parser re-splits.
What did you expect to see?
Each configured directory is checked as a single path; no stray directory is created; the output has one clean line per directory.
What did you see instead?
The tool splits directory paths at the space and creates a stray directory.
Anything else?
The docs recommend a space-free install path, but the tool shouldn't create stray directories or emit corrupt output when that guidance isn't met - especially since Windows users frequently install under C:\Program Files. A minimal fix is
available (see PR).
Activity