Univention Bugzilla – Attachment 8707 Details for
Bug 44166
univention-directory-listener-convert doesn't copy the notifier_id from BDB to LMDB
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
fix_copying_cache_master_entry_to_lmdb.patch
fix_copying_cache_master_entry_to_lmdb.patch (text/plain), 4.90 KB, created by
Arvid Requate
on 2017-03-30 16:40:43 CEST
(
hide
)
Description:
fix_copying_cache_master_entry_to_lmdb.patch
Filename:
MIME Type:
Creator:
Arvid Requate
Created:
2017-03-30 16:40:43 CEST
Size:
4.90 KB
patch
obsolete
>Index: src/cache.h >=================================================================== >--- src/cache.h (Revision 78503) >+++ src/cache.h (Arbeitskopie) >@@ -42,12 +42,6 @@ > extern char *cache_dir; > extern char *ldap_dir; > >-typedef struct _CacheMasterEntry { >- NotifierID id; >- NotifierID schema_id; >-} CacheMasterEntry; >-extern CacheMasterEntry cache_master_entry; >- > int cache_lock(void); > int cache_init(char *cache_mdb_dir, int mdb_flags); > void cache_sync(void); >Index: src/cache_bdb.c >=================================================================== >--- src/cache_bdb.c (Revision 78503) >+++ src/cache_bdb.c (Arbeitskopie) >@@ -89,7 +89,7 @@ > char *bdb_cache_dir = "/var/lib/univention-directory-listener"; > char *bdb_ldap_dir = "/var/lib/univention-ldap"; > >-BdbCacheMasterEntry bdb_cache_master_entry; >+CacheMasterEntry cache_master_entry; > > DB *dbp; > #ifdef WITH_DB42 >@@ -278,7 +278,7 @@ > return fclose(fp) || (rv != 1); > } > >-int bdb_cache_get_master_entry(BdbCacheMasterEntry *master_entry) { >+int bdb_cache_get_master_entry(CacheMasterEntry *master_entry) { > DBT key, data; > int rv; > >@@ -297,18 +297,18 @@ > return rv; > } > >- if (data.size != sizeof(BdbCacheMasterEntry)) { >+ if (data.size != sizeof(CacheMasterEntry)) { > univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "master entry has unexpected length"); > return 1; > } > >- memcpy(master_entry, data.data, sizeof(BdbCacheMasterEntry)); >+ memcpy(master_entry, data.data, sizeof(CacheMasterEntry)); > free(data.data); > > return 0; > } > >-int bdb_cache_update_master_entry(BdbCacheMasterEntry *master_entry, DB_TXN *dbtxnp) { >+int bdb_cache_update_master_entry(CacheMasterEntry *master_entry, DB_TXN *dbtxnp) { > DBT key, data; > int rv; > int flags; >@@ -320,7 +320,7 @@ > key.size = MASTER_KEY_SIZE; > > data.data = (void *)master_entry; >- data.size = sizeof(BdbCacheMasterEntry); >+ data.size = sizeof(CacheMasterEntry); > > #ifdef WITH_DB42 > if (dbtxnp == NULL) >@@ -343,7 +343,7 @@ > DB_TXN *bdb_cache_new_transaction(NotifierID id, char *dn) { > #ifdef WITH_DB42 > DB_TXN *dbtxnp; >- BdbCacheMasterEntry master_entry; >+ CacheMasterEntry master_entry; > NotifierID *old_id; > > dbenvp->txn_begin(dbenvp, NULL, &dbtxnp, 0); >Index: src/cache_bdb.h >=================================================================== >--- src/cache_bdb.h (Revision 78503) >+++ src/cache_bdb.h (Arbeitskopie) >@@ -41,17 +41,11 @@ > extern char *bdb_cache_dir; > extern char *bdb_ldap_dir; > >-typedef struct _BdbCacheMasterEntry { >- NotifierID id; >- NotifierID schema_id; >-} BdbCacheMasterEntry; >-extern BdbCacheMasterEntry bdb_cache_master_entry; >- > int bdb_cache_lock(void); > int bdb_cache_init(void); > void bdb_cache_sync(void); >-int bdb_cache_get_master_entry(BdbCacheMasterEntry *master_entry); >-int bdb_cache_update_master_entry(BdbCacheMasterEntry *master_entry, DB_TXN *dptxnp); >+int bdb_cache_get_master_entry(CacheMasterEntry *master_entry); >+int bdb_cache_update_master_entry(CacheMasterEntry *master_entry, DB_TXN *dptxnp); > int bdb_cache_update_entry(NotifierID id, char *dn, CacheEntry *entry); > int bdb_cache_update_entry_lower(NotifierID id, char *dn, CacheEntry *entry); > int bdb_cache_delete_entry(NotifierID id, char *dn); >Index: src/cache_entry.h >=================================================================== >--- src/cache_entry.h (Revision 78503) >+++ src/cache_entry.h (Arbeitskopie) >@@ -40,6 +40,12 @@ > > #include "network.h" > >+typedef struct _CacheMasterEntry { >+ NotifierID id; >+ NotifierID schema_id; >+} CacheMasterEntry; >+extern CacheMasterEntry cache_master_entry; >+ > struct _CacheEntryAttribute { > char *name; > char **values; >Index: src/convert.c >=================================================================== >--- src/convert.c (Revision 78503) >+++ src/convert.c (Arbeitskopie) >@@ -120,6 +120,7 @@ > if (bdb_cache_init() != 0) > exit(1); > >+ printf("Converting listener cache to LMDB\n"); > rv = snprintf(cache_mdb_dir, PATH_MAX, "%s/cache", cache_dir); > if (rv < 0 || rv >= PATH_MAX) > abort(); >@@ -126,7 +127,21 @@ > if (cache_init(cache_mdb_dir, 0) != 0) > exit(1); > >- bdb_cache_get_master_entry(&bdb_cache_master_entry); >+ rv = bdb_cache_get_master_entry(&cache_master_entry); >+ if (rv) { >+ printf("notifier_id not found in BDB cache, falling back to notifier_id file\n"); >+ cache_get_int("notifier_id", &cache_master_entry.id, -1); >+ if (cache_master_entry.id == -1) { >+ univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "cannot determine current ID"); >+ univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_ERROR, "Aborting conversion"); >+ return 1; >+ } >+ >+ printf("schema_id not found in BDB cache, falling back to schema/id/id file\n"); >+ cache_get_schema_id(&cache_master_entry.schema_id, 0); >+ } >+ printf("cached notifier_id:\t%ld\n", cache_master_entry.id); >+ printf("cached schema_id:\t%ld\n", cache_master_entry.schema_id); > rv = cache_update_master_entry(&cache_master_entry); > > for (rv = bdb_cache_first_entry(&cur, &dn, &entry); rv != DB_NOTFOUND; rv = bdb_cache_next_entry(&cur, &dn, &entry)) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 44166
: 8707