Bug 28189 - broken pseudouser pairs selection in hasher.
Summary: broken pseudouser pairs selection in hasher.
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: hasher (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-12-05 22:09 MSK by viy
Modified: 2012-12-06 05:02 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description viy 2012-12-05 22:09:07 MSK
воспроизводится на hasher-1.3.26-alt1 (Сизиф) и hasher-1.3.23-alt1 (t6):

2 два набора псевдопользователей
$ cat /etc/hasher-priv/user.d/igor
user1=igor_a
user2=igor_b
[...]
$ cat /etc/hasher-priv/user.d/igor:1
user1=igor_a1
user2=igor_b1
В системе все ок:
$ grep igor_ /etc/passwd
igor_a:x:502:505:1st hasher satellite for igor:/dev/null:/dev/null
igor_b:x:503:506:2nd hasher satellite for igor:/dev/null:/dev/null
igor_a1:x:534:534:1st hasher satellite for igor:/dev/null:/dev/null
igor_b1:x:535:535:2nd hasher satellite for igor:/dev/null:/dev/null

Но hasher использует только одного псевдопользователя,igor_b1 :(

rm -rf /tmp/hasher
md /tmp/hasher; ln -s ~/hasher/repo /tmp/hasher
hsh  --initroot-only /tmp/hasher
$ hsh-run grep builder /etc/passwd
builder:x:535:535::/usr/src:/bin/bash

rm -rf /tmp/hasher
md /tmp/hasher; ln -s ~/hasher/repo /tmp/hasher
hsh  --initroot-only --number 1 /tmp/hasher
$ hsh-run grep builder /etc/passwd
builder:x:535:535::/usr/src:/bin/bash

Везде builder:x:535:, а должен быть в первом случае 506.
Comment 1 viy 2012-12-06 00:54:03 MSK
P.S. сборка пакетов работает.

Но, если на 2-х разные папки запустить 2 набора пакетов,
то сборка будет медленнее из-за блокировок - в какие-то моменты одна из
очередей блокирует другую.
Comment 2 Dmitry V. Levin 2012-12-06 03:17:50 MSK
В hasher реализована следующий алгоритм:
- если chroot существует, то используется та пара псевдопользователей, которой этот чрут принадлежит;
- если chroot не существует, то
  - если пара псевдопользователей указана, то используется эта пара;
  - иначе случайным образом выбирается какая-нибудь пара псевдопользователей, которая не используется в данный момент.

Если вам этот алгоритм не нравится, можете придумать что-нибудь получше. :)
Comment 3 viy 2012-12-06 04:01:06 MSK
гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
это --number 1
а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?
я раньше думал, что если number не указан (NULL)
то используется  /etc/hasher-priv/user.d/igor<NULL>
т.е. /etc/hasher-priv/user.d/igor.

Это не праздные рассуждения, так как у меня на это был завязан код 
в gear-cronbuild-apply-hooks-in-hsh-chroot,
который в случае нескольких псевдопользователей не работает :(
Comment 4 viy 2012-12-06 04:19:43 MSK
В общем, особой проблемы нет, обходной путь есть, 
хочется только понять, есть ли способ явно указать пользователя,
созданного без subconfig  identifier, или нет.
как описано в вопросе внизу.

> гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
> это --number 1
> а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?
> я раньше думал, что если number не указан (NULL)
> то используется  /etc/hasher-priv/user.d/igor<NULL>
> т.е. /etc/hasher-priv/user.d/igor.
Comment 5 Dmitry V. Levin 2012-12-06 05:02:18 MSK
(In reply to comment #3)
> гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
> это --number 1
> а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?

--number=0

> я раньше думал, что если number не указан (NULL)
> то используется  /etc/hasher-priv/user.d/igor<NULL>
> т.е. /etc/hasher-priv/user.d/igor.

Так было до октября 2007 года, в hasher >= 1.3.0-alt1 отсутствие --number означает случайный выбор свободной пары, см. %changelog версий 1.3.0 и 1.3.1.

> Это не праздные рассуждения, так как у меня на это был завязан код 
> в gear-cronbuild-apply-hooks-in-hsh-chroot,
> который в случае нескольких псевдопользователей не работает :(

Наиболее надежный вариант - привязка пары псевдопользователей к чруту в конфиге ~/.hasher/config