[Bug]: ini_manage writes to the .ini file even if there is no changes to make.

Đang mở
#70,762 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

@piterpunk đang làm issue này rồi.

Từ ngày 9/11/2026.

  • #70763 của @piterpunk — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
infrastructure

Hướng nghiên cứu

The bug is in the ini state module's set_option and remove_option paths, which write the .ini file even when no change is needed. Start by finding the ini execution and state module in the salt source and checking where the file is rewritten without comparing against the current contents. Done means ini.options_present on an already-correct file reports no changes and leaves the file untouched, with a test that repeats the reproduction above.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug needs-triage
What happened?

When called, ini.set_option and ini.remove_option always writes to the .ini file, even without anything to do. That makes the state ini.options_present and ini.options_absent to be a possible destructible operation without a state change.

This can be reproductible with this simple state:

file_manage_/tmp/test.ini:
  file.managed:
    - name: /tmp/test.ini
    - contents: |
        [Section A]
        option = something
        
        [Section B]
        option = now
        option = this
        option = is
        option = duplicated

ini_manage_/tmp/test.ini:
  ini.options_present:
    - name: /tmp/test.ini
    - sections:
        Section A: 
          option: something

cat_/tmp/test.ini:
  cmd.run:
    - name: cat /tmp/test.ini

The first step creates a file, the second one ensures that option: something is set inside Section A. As option is already something in `Section A, nothing should be done and the third step should show the same file created at first step. But that is not the result:

local:
----------
          ID: file_manage_/tmp/test.ini
    Function: file.managed
        Name: /tmp/test.ini
      Result: True
     Comment: File /tmp/test.ini updated
     Started: 11:34:54.946503
    Duration: 9.895 ms
     Changes:
              ----------
              diff:
                  New file
----------
          ID: ini_manage_/tmp/test.ini
    Function: ini.options_present
        Name: /tmp/test.ini
      Result: True
     Comment: No anomaly detected
     Started: 11:34:54.960495
    Duration: 2.254 ms
     Changes:
----------
          ID: cat_/tmp/test.ini
    Function: cmd.run
        Name: cat /tmp/test.ini
      Result: True
     Comment: Command "cat /tmp/test.ini" run
     Started: 11:34:54.963978
    Duration: 4.899 ms
     Changes:
              ----------
              pid:
                  3533639
              retcode:
                  0
              stderr:
              stdout:
                  [Section A]
                  option = something

                  [Section B]
                  option = duplicated

Summary for local
------------
Succeeded: 3 (changed=2)
Failed:    0

As you can see, even without any change being registered at second step, the .ini file was changed.

Type of salt install

Official rpm

Major version

3008.x, 3006.x, 3007.x

What supported OS are you seeing the problem on? Can select multiple. (If bug appears on an unsupported OS, please open a GitHub Discussion instead)

oraclelinux-8

salt --versions-report output
Salt Version:
           Salt: 3006.23

Python Version:
         Python: 3.10.19 (main, Feb 17 2026, 23:32:03) [GCC 11.2.0]

Dependency Versions:
           cffi: 2.0.0
       cherrypy: 18.10.0
   cryptography: 46.0.5
       dateutil: 2.8.1
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
         Jinja2: 3.1.6
        libgit2: Not Installed
   looseversion: 1.0.2
       M2Crypto: Not Installed
           Mako: Not Installed
        msgpack: 1.0.2
   msgpack-pure: Not Installed
   mysql-python: Not Installed
      packaging: 24.0
      pycparser: 2.21
       pycrypto: Not Installed
   pycryptodome: 3.19.1
         pygit2: Not Installed
   python-gnupg: 0.4.8
         PyYAML: 6.0.1
          PyZMQ: 23.2.0
         relenv: 0.22.4
          smmap: Not Installed
        timelib: 0.3.0
        Tornado: 4.5.3
            ZMQ: 4.3.4

Salt Extensions:
 salt-healthone: 1.30.6
       salt-hip: 1.3.1
  salt-services: 1.0.4

System Versions:
           dist: oracle 8.10
         locale: utf-8
        machine: x86_64
        release: 5.4.17-2136.344.4.1.el8uek.x86_64
         system: Linux
        version: Oracle Linux Server 8.10
Ngôn ngữ chính
Python
Star
15.8k
Fork
5.6k
Merge trung bình
5 ngày 9 giờ
Pull request đã merge (30 ngày)
99

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của saltstack/salt

Tất cả issue của saltstack/salt

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.