Bug 57504

Summary: samba-tool некорректно устанавливает и показывает расписание межсайтовой репликации
Product: Sisyphus Reporter: Vladislav Glinkin <glinkinvd>
Component: sambaAssignee: Evgeny Sinelnikov <sin>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: shevchenkodyu, sin
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
Расписание в samba-tool
none
То же самое расписание в Windows
none
Изменения в schedule.py none

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