static void _round_open_close (void) { sqlx_repository_t *repo = NULL; GError *err; err = sqlx_repository_init("/tmp", NULL, &repo); g_assert_no_error (err); g_assert_true (sqlx_repository_running (repo)); err = sqlx_repository_configure_type(repo, type, SCHEMA); g_assert_no_error (err); sqlx_repository_set_locator (repo, _locator, NULL); for (int i=0; i<5 ;i++) { struct sqlx_sqlite3_s *sq3 = NULL; struct sqlx_name_s n = { .base = name, .type = type, .ns = nsname, }; err = sqlx_repository_open_and_lock(repo, &n, SQLX_OPEN_LOCAL, &sq3, NULL); g_assert_no_error (err); g_assert_nonnull (sq3); err = sqlx_repository_unlock_and_close(sq3); g_assert_no_error (err); } sqlx_repository_clean(repo); }
GError * meta2_backend_init(struct meta2_backend_s **result, struct sqlx_repository_s *repo, const gchar *ns, struct grid_lbpool_s *glp, struct hc_resolver_s *resolver) { GError *err = NULL; struct meta2_backend_s *m2 = NULL; gsize s; EXTRA_ASSERT(result != NULL); EXTRA_ASSERT(glp != NULL); EXTRA_ASSERT(repo != NULL); EXTRA_ASSERT(resolver != NULL); m2 = g_malloc0(sizeof(struct meta2_backend_s)); s = metautils_strlcpy_physical_ns(m2->backend.ns_name, ns, sizeof(m2->backend.ns_name)); if (sizeof(m2->backend.ns_name) <= s) { g_free(m2); return NEWERROR(CODE_BAD_REQUEST, "Namespace too long"); } m2->backend.type = NAME_SRVTYPE_META2; m2->backend.repo = repo; m2->backend.lb = glp; m2->policies = service_update_policies_create(); g_mutex_init(&m2->nsinfo_lock); m2->flag_precheck_on_generate = TRUE; err = sqlx_repository_configure_type(m2->backend.repo, NAME_SRVTYPE_META2, schema); if (NULL != err) { meta2_backend_clean(m2); g_prefix_error(&err, "Backend init error: "); return err; } m2->resolver = resolver; GRID_DEBUG("M2V2 backend created for NS[%s] and repo[%p]", m2->backend.ns_name, m2->backend.repo); *result = m2; return NULL; }
static void _round_init (void) { sqlx_repository_t *repo = NULL; GError *err; err = sqlx_repository_init("/tmp", NULL, &repo); g_assert_no_error (err); for (int i=0; i<5 ;i++) sqlx_repository_set_locator (repo, _locator, NULL); for (int i=0; i<5 ;i++) g_assert_true (sqlx_repository_running (repo)); for (int i=0; i<5 ;i++) { err = sqlx_repository_configure_type(repo, type, SCHEMA); g_assert_no_error (err); } sqlx_repository_clean(repo); }
static gboolean _configure_backend(struct sqlx_service_s *ss) { struct sqlx_repo_config_s repository_config = {0}; repository_config.flags = 0; repository_config.flags |= ss->flag_delete_on ? SQLX_REPO_DELETEON : 0; repository_config.flags |= ss->flag_cached_bases ? 0 : SQLX_REPO_NOCACHE; repository_config.flags |= ss->flag_autocreate ? SQLX_REPO_AUTOCREATE : 0; repository_config.sync_solo = ss->sync_mode_solo; repository_config.sync_repli = ss->sync_mode_repli; repository_config.page_size = SQLX_DEFAULT_PAGE_SIZE; if (ss->cfg_page_size >= 512) repository_config.page_size = ss->cfg_page_size; GError *err = sqlx_repository_init(ss->volume, &repository_config, &ss->repository); if (err) { GRID_ERROR("SQLX repository init failure : (%d) %s", err->code, err->message); g_clear_error(&err); return FALSE; } err = sqlx_repository_configure_type(ss->repository, ss->service_config->srvtype, ss->service_config->schema); if (err) { GRID_ERROR("SQLX schema init failure : (%d) %s", err->code, err->message); g_clear_error(&err); return FALSE; } sqlx_repository_configure_open_timeout (ss->repository, ss->open_timeout * G_TIME_SPAN_MILLISECOND); sqlx_repository_configure_hash (ss->repository, ss->service_config->repo_hash_width, ss->service_config->repo_hash_depth); GRID_TRACE("SQLX repository initiated"); return TRUE; }