IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
According to the new policy a key (that is not a base key) exists,
iff it exists in the subkey list of its parent key.
Usually this subkeylist is present, but in a transaction-less
dbwrap backend (ctdb), a failing write can leave an "incomplete"
key without its own subkeylist-record. (Otherwise such an
incomplete key can be generated with e.g. tdbtool.)
For such a key net registry enumerate (e.g.) would fail.
This commit fixes this behaviour of regdb_fetch_keys().
Michael
(This used to be commit f329aaf045)
/*
* Make the store operation as safe as possible without transactions:
*
* (1) For each subkey removed from ctr compared with old_subkeys:
*
* (a) First delete the value db entry.
*
* (b) Next delete the secdesc db record.
*
* (c) Then delete the subkey list entry.
*
* (2) Now write the list of subkeys of the parent key,
* deleting removed entries and adding new ones.
*
* (3) Finally create the subkey list entries for the added keys.
*
* This way if we crash half-way in between deleting the subkeys
* and storing the parent's list of subkeys, no old data can pop up
* out of the blue when re-adding keys later on.
*/
The workflow is going to be modified to meet this agendain the next commits.
Michael
(This used to be commit 55dd9bdd14)
Existence of a key is defined as follows:
* If the key is a base key (without separator), the key exists
iff the corresponding entry exist in the registry tdb.
* If the key is not a base key, the key exists, iff it exists
in the list of subkeys of it's parent keyname's tdb entry.
Michael
(This used to be commit 477008367f)
This is done by first checking if all data (keys and values) exists
(using new regdb_key_exists()) and kompletely skipping all writes if it does.
Michael
(This used to be commit 7c5f1583cb)
The existence of the registry key entry (and not the values entry!) is
taken as the criterion for existence.
Michael
(This used to be commit 207a0ece45)
This reverts commit 4e2be189e9.
Metze, this broke the registry (reg_api layer), but I don't yet know
exactly how and why. By the way, the locks there had the purpose of
fetching the seqnum that really matches the data.
This needs some more thought / debugging. But I wanted to have
the tree in a working state again.
Michael
(This used to be commit 5c28c74aa0)
Leave this to the users (currently registry_init_smbconf() and
init_registry()) to initialize as much of preliminary registry data
as needed.
Michael
(This used to be commit 59fdd30c78)