apache / apache/iotdb

[Feature request] remove dependency on wmic & wsh from windows batch files

Open
#11,014 3 comments 2 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.4k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
115

Description

### Search before asking

- [X] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Motivation

Hello team, I am building an installer for IotDB so that I can distribte IotDB with a solution I develop. The installer deploys IotDB as a windows service.

During my testing I have discovered that;

1. The env scripts are using wmic which is deprecated and is an optional feature on Windows 10/11 (https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features)
2. The env script are using WSH which is not desirable. Windows Scripting host is blocked on many customer sites and is not good practise on Windows.

To add to this, I am testing in the Windows 11 Sandbox which does not allow you to enable the wmic feature anyway so IotDB would never start successfully.

To work around this I have developed a small C# console app to return the number of cores and memory in megabytes

https://github.com/ope-nz/IotDBHWInfo

In the env batch files I have replaced the cores/memory determination with these lines;

for /f %%A in ('..\tools\IotDBHWInfo.exe -cores') do set "system_cpu_cores=%%A"
echo CORES %system_cpu_cores%

for /f %%A in ('..\tools\IotDBHWInfo.exe -memory') do set "system_memory_in_mb=%%A"
echo SYSTEM MEMORY %system_memory_in_mb%

### Solution

Develop alternate solution to using wmic/wsh such as console app show above

### Alternatives

Use https://github.com/ope-nz/IotDBHWInfo

Update env batch files with

for /f %%A in ('..\tools\IotDBHWInfo.exe -cores') do set "system_cpu_cores=%%A"
echo CORES %system_cpu_cores%

for /f %%A in ('..\tools\IotDBHWInfo.exe -memory') do set "system_memory_in_mb=%%A"
echo SYSTEM MEMORY %system_memory_in_mb%

### Are you willing to submit a PR?

- [X] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start by locating the Windows environment batch files and the current wmic and WSH calls. Compare their CPU-core and memory detection with the behavior described for IotDBHWInfo.exe. Done means the environment scripts no longer depend on wmic or WSH and IotDB can start in the reported Windows 11 Sandbox scenario.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, shell
Domain
devops, operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.