Bug 57504 - samba-tool некорректно устанавливает и показывает расписание межсайтовой репликации
Summary: samba-tool некорректно устанавливает и показывает расписание межсайтовой репл...
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: samba (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-01-15 19:16 MSK by Vladislav Glinkin
Modified: 2026-01-21 15:33 MSK (History)
2 users (show)

See Also:


Attachments
Расписание в samba-tool (8.61 KB, image/png)
2026-01-15 19:16 MSK, Vladislav Glinkin
no flags Details
То же самое расписание в Windows (16.14 KB, image/png)
2026-01-15 19:17 MSK, Vladislav Glinkin
no flags Details
Изменения в schedule.py (3.66 KB, patch)
2026-01-19 18:32 MSK, Vladislav Glinkin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2026-01-15 19:16:57 MSK
Created attachment 20501 [details]
Расписание в samba-tool

Версия пакета: samba-dc-4.21.9-alt2

Стенды:
* 2 контроллера домена Samba
* Управляющая машина Windows Server 2019 (введена как клиент)

При использовании пресетов/установки расписания межсайтовой репликации заметил большую разницу во времени между расписанием в выводе # samba-tool sites connection schedule show DC2 и расписанием репликации в Windows.

При этом проблем с синхронизацией времени не наблюдается:

	# timedatectl
	Local time: Чт 2026-01-15 19:04:38 MSK  
	Universal time: Чт 2026-01-15 16:04:38 UTC  
	RTC time: Чт 2026-01-15 16:04:38  
	Time zone: Europe/Moscow (MSK, +0300)  
	System clock synchronized: yes  
	NTP service: active  
	RTC in local TZ: no

	PS C:\Users\Administrator> Get-TimeZone
	Id                         : Russian Standard Time
	DisplayName                : (UTC+03:00) Москва, Санкт-Петербург
	StandardName               : RTZ 2 (зима)
	DaylightName               : RTZ 2 (лето)
	BaseUtcOffset              : 03:00:00
	SupportsDaylightSavingTime : True
	
	PS C:\Users\Administrator> Get-Date
	
	15 января 2026 г. 19:03:42

Шаги воспроизведения:

1. 
# samba-tool sites connection schedule preset DC2 none && \
samba-tool sites connection schedule preset DC2 weekends

2.  Просмотреть расписание в Active Directory на управляющей машине Windows

Фактический результат:
	Разница между расписанием 14 часов (Windows отстаёт).  При управлении расписанием через samba-tool получается не то, что ожидаешь увидеть. Справедлива и обратная ситуация, когда расписание устанавливается через средства администрирования Windows, а расписание смотришь в samba-tool.

Дополнительно:
	Помимо смещения по времени, таблицу различаются и по внешнему виду. Она была бы намного читабельнее, если бы вместо часов в заголовках (1,2,3...24) отображались периоды (0:00-1:00,1:00-2:00...23:00-0:00). Так было бы понятнее, к примеру, при использовании # samba-tool sites connection schedule set в такой-то период будет совершенно 4, 2 или 1 репликация за час.
Comment 1 Vladislav Glinkin 2026-01-15 19:17:56 MSK
Created attachment 20502 [details]
То же самое расписание в Windows
Comment 2 Vladislav Glinkin 2026-01-19 18:31:33 MSK
Проблема проявляется и в Windows AD.

Есть предположение, что в schedule_data воскресенье имеет нулевой индекс, в то время как в исходном коде данный индекс имеет понедельник. Плюс, не совсем понятно, учитывается ли здесь UTC и часовой пояс.

Из-за этого выражения в функции show_schedule

	byte_pos = (day_idx * 24 + hour + 7) % len(schedule_data)

и set_schedule_slot

	data_index = (day_index * 24 + hour_index + 7) % len(schedule_data)

некорректно обрабатывается маска расписания репликации.

Прикрепляю файл schedule-with-table.patch, в котором эти предположения были учтены, а также была видоизменена таблица, чтобы в заголовках были периоды (аналогично тому, что в Windows). 

В результате, вывод расписания стал одинаковым как на КД, так и на управляющей машине Windows.
Comment 3 Vladislav Glinkin 2026-01-19 18:32:13 MSK
Created attachment 20520 [details]
Изменения в schedule.py