/* * snmp_update_cache_stats() * * Reads the backend cache stats from the backend monitor entry and * updates the global counter used by the SNMP sub-agent as well as * the SNMP monitor entry. */ static void snmp_update_cache_stats(void) { Slapi_Backend *be, *be_next; char *cookie = NULL; Slapi_PBlock *search_result_pb = NULL; Slapi_Entry **search_entries; int search_result; /* set the cache hits/cache entries info */ be = slapi_get_first_backend(&cookie); if (!be){ slapi_ch_free ((void **) &cookie); return; } be_next = slapi_get_next_backend(cookie); slapi_ch_free ((void **) &cookie); /* for now, only do it if there is only 1 backend, otherwise don't know * which backend to pick */ if(be_next == NULL) { Slapi_DN monitordn; slapi_sdn_init(&monitordn); be_getmonitordn(be,&monitordn); /* do a search on the monitor dn to get info */ search_result_pb = slapi_search_internal( slapi_sdn_get_dn(&monitordn), LDAP_SCOPE_BASE, "objectclass=*", NULL, NULL, 0); slapi_sdn_done(&monitordn); slapi_pblock_get( search_result_pb, SLAPI_PLUGIN_INTOP_RESULT, &search_result); if(search_result == 0) { slapi_pblock_get( search_result_pb,SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES, &search_entries); /* set the entrycachehits */ slapi_counter_set_value(g_get_global_snmp_vars()->entries_tbl.dsCacheHits, slapi_entry_attr_get_ulonglong(search_entries[0], "entrycachehits")); /* set the currententrycachesize */ slapi_counter_set_value(g_get_global_snmp_vars()->entries_tbl.dsCacheEntries, slapi_entry_attr_get_ulonglong(search_entries[0], "currententrycachesize")); } slapi_free_search_results_internal(search_result_pb); slapi_pblock_destroy(search_result_pb); } }
static int ldbm_instance_generate(struct ldbminfo *li, char *instance_name, Slapi_Backend **ret_be) { Slapi_Backend *new_be = NULL; int rc = 0; /* Create a new instance, process config info for it, * and then call slapi_be_new and create a new backend here */ new_be = slapi_be_new(LDBM_DATABASE_TYPE_NAME /* type */, instance_name, 0 /* public */, 1 /* do log changes */); new_be->be_database = li->li_plugin; rc = ldbm_instance_create(new_be, instance_name); if (rc) { goto bail; } ldbm_instance_config_load_dse_info(new_be->be_instance_info); ldbm_instance_create_default_indexes(new_be); /* if USN plugin is enabled, set slapi_counter */ if (plugin_enabled("USN", li->li_identity) && ldbm_back_isinitialized()) { /* * ldbm_back is already initialized. * I.e., a new instance is being added. * If not initialized, ldbm_usn_init is called later and * be usn counter is initialized there. */ if (config_get_entryusn_global()) { /* global usn counter is already created. * set it to be_usn_counter. */ new_be->be_usn_counter = li->li_global_usn_counter; } else { new_be->be_usn_counter = slapi_counter_new(); slapi_counter_set_value(new_be->be_usn_counter, INITIALUSN); } } if (ret_be != NULL) { *ret_be = new_be; } bail: return rc; }