ZEBRA_FAIL on failure. Only then it is meaningful to check for error code.
It is therefore no longer necessary to clear it (reset it).
-/* $Id: api.h,v 1.30 2005-09-13 11:51:05 adam Exp $
+/* $Id: api.h,v 1.31 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
YAZ_EXPORT
void zebra_result(ZebraHandle zh, int *code, char **addinfo);
YAZ_EXPORT
void zebra_result(ZebraHandle zh, int *code, char **addinfo);
-/**
- \brief Clears last error.
- \param zh zebra session handle.
-*/
-YAZ_EXPORT
-void zebra_clearError(ZebraHandle zh);
-
-
/**
\brief Set limit before Zebra does approx hit count
\param zh session handle
/**
\brief Set limit before Zebra does approx hit count
\param zh session handle
-/* $Id: zebraapi.c,v 1.198 2005-12-09 10:56:59 adam Exp $
+/* $Id: zebraapi.c,v 1.199 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
{
ASSERTZH;
yaz_log(log_level, "zebra_flush_reg");
{
ASSERTZH;
yaz_log(log_level, "zebra_flush_reg");
zebraExplain_flush (zh->reg->zei, zh);
extract_flushWriteKeys (zh, 1 /* final */);
zebraExplain_flush (zh->reg->zei, zh);
extract_flushWriteKeys (zh, 1 /* final */);
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_shutdown");
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_shutdown");
zebra_mutex_cond_lock (&zh->service->session_lock);
zh->service->stop_flag = 1;
zebra_mutex_cond_lock (&zh->service->session_lock);
zh->service->stop_flag = 1;
ZebraService zs;
ASSERTZH;
yaz_log(log_level, "zebra_admin_start");
ZebraService zs;
ASSERTZH;
yaz_log(log_level, "zebra_admin_start");
zs = zh->service;
zebra_mutex_cond_lock (&zs->session_lock);
zebra_mutex_cond_unlock (&zs->session_lock);
zs = zh->service;
zebra_mutex_cond_lock (&zs->session_lock);
zebra_mutex_cond_unlock (&zs->session_lock);
assert(hits);
assert(setname);
yaz_log(log_level, "zebra_search_rpn");
assert(hits);
assert(setname);
yaz_log(log_level, "zebra_search_rpn");
yaz_log(log_level, "zebra_records_retrieve n=%d", num_recs);
yaz_log(log_level, "zebra_records_retrieve n=%d", num_recs);
if (!zh->res)
{
zebra_setError(zh, YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
if (!zh->res)
{
zebra_setError(zh, YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
ASSERTZH;
assert(statuses);
yaz_log(log_level, "zebra_deleteResultSet n=%d",num_setnames);
ASSERTZH;
assert(statuses);
yaz_log(log_level, "zebra_deleteResultSet n=%d",num_setnames);
if (zebra_begin_read(zh))
return Z_DeleteStatus_systemProblemAtTarget;
switch (function)
if (zebra_begin_read(zh))
return Z_DeleteStatus_systemProblemAtTarget;
switch (function)
-void zebra_clearError(ZebraHandle zh)
-{
- if (zh)
- {
- zh->errCode = 0;
- zh->errString = 0;
- }
-}
-
ZEBRA_RES zebra_auth (ZebraHandle zh, const char *user, const char *pass)
{
const char *p;
ZEBRA_RES zebra_auth (ZebraHandle zh, const char *user, const char *pass)
{
const char *p;
ZebraService zs;
ASSERTZH;
ZebraService zs;
ASSERTZH;
zs= zh->service;
sprintf(u, "perm.%.30s", user ? user : "anonymous");
zs= zh->service;
sprintf(u, "perm.%.30s", user ? user : "anonymous");
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_begin db=%s rt=%s",
database, record_type);
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_begin db=%s rt=%s",
database, record_type);
if (zebra_select_database(zh, database) == ZEBRA_FAIL)
return ZEBRA_FAIL;
return zebra_begin_trans(zh, 1);
if (zebra_select_database(zh, database) == ZEBRA_FAIL)
return ZEBRA_FAIL;
return zebra_begin_trans(zh, 1);
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_end");
{
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_end");
return zebra_end_trans(zh);
}
return zebra_end_trans(zh);
}
int i;
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_segment");
int i;
ASSERTZH;
yaz_log(log_level, "zebra_admin_import_segment");
for (i = 0; i<segment->num_segmentRecords; i++)
{
Z_NamePlusRecord *npr = segment->segmentRecords[i];
for (i = 0; i<segment->num_segmentRecords; i++)
{
Z_NamePlusRecord *npr = segment->segmentRecords[i];
assert(rec_buf);
yaz_log(log_level, "zebra_admin_exchange_record ac=%d", action);
assert(rec_buf);
yaz_log(log_level, "zebra_admin_exchange_record ac=%d", action);
if (!recid_buf || recid_len <= 0 || recid_len >= sizeof(recid_z))
{
if (!recid_buf || recid_len <= 0 || recid_len >= sizeof(recid_z))
{
{
ASSERTZH;
assert(path);
{
ASSERTZH;
assert(path);
yaz_log (log_level, "updating %s", path);
repositoryUpdate (zh, path);
yaz_log (log_level, "updating %s", path);
repositoryUpdate (zh, path);
}
int zebra_repository_delete (ZebraHandle zh, const char *path)
{
ASSERTZH;
assert(path);
}
int zebra_repository_delete (ZebraHandle zh, const char *path)
{
ASSERTZH;
assert(path);
yaz_log (log_level, "deleting %s", path);
repositoryDelete (zh, path);
yaz_log (log_level, "deleting %s", path);
repositoryDelete (zh, path);
}
int zebra_repository_show (ZebraHandle zh, const char *path)
}
int zebra_repository_show (ZebraHandle zh, const char *path)
ASSERTZH;
assert(path);
yaz_log(log_level, "zebra_repository_show");
ASSERTZH;
assert(path);
yaz_log(log_level, "zebra_repository_show");
repositoryShow (zh, path);
repositoryShow (zh, path);
-static int zebra_commit_ex(ZebraHandle zh, int clean_only)
+static ZEBRA_RES zebra_commit_ex(ZebraHandle zh, int clean_only)
{
int seqno;
char val;
const char *rval;
BFiles bfs;
ASSERTZH;
{
int seqno;
char val;
const char *rval;
BFiles bfs;
ASSERTZH;
zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
}
rval = res_get (zh->res, "shadow");
if (!rval)
{
yaz_log (YLOG_WARN, "Cannot perform commit - No shadow area defined");
}
rval = res_get (zh->res, "shadow");
if (!rval)
{
yaz_log (YLOG_WARN, "Cannot perform commit - No shadow area defined");
}
zebra_lock_w (zh->lock_normal);
}
zebra_lock_w (zh->lock_normal);
zebra_unlock (zh->lock_shadow);
zebra_unlock (zh->lock_normal);
zebra_unlock (zh->lock_shadow);
zebra_unlock (zh->lock_normal);
}
ZEBRA_RES zebra_clean(ZebraHandle zh)
}
ZEBRA_RES zebra_clean(ZebraHandle zh)
BFiles bfs = 0;
ASSERTZH;
yaz_log(log_level, "zebra_init");
BFiles bfs = 0;
ASSERTZH;
yaz_log(log_level, "zebra_init");
zebra_select_default_database(zh);
if (!zh->res)
zebra_select_default_database(zh);
if (!zh->res)
BFiles bfs;
ASSERTZH;
yaz_log(log_level, "zebra_compact");
BFiles bfs;
ASSERTZH;
yaz_log(log_level, "zebra_compact");
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
if (!zh->res)
{
zh->errCode = YAZ_BIB1_DATABASE_UNAVAILABLE;
{
ASSERTZH;
yaz_log(log_level, "zebra_shadow_enable");
{
ASSERTZH;
yaz_log(log_level, "zebra_shadow_enable");
zh->shadow_enable = value;
}
zh->shadow_enable = value;
}
ASSERTZH;
assert(encoding);
yaz_log(log_level, "zebra_octet_term_encoding %s", encoding);
ASSERTZH;
assert(encoding);
yaz_log(log_level, "zebra_octet_term_encoding %s", encoding);
if (zh->iconv_to_utf8 != 0)
yaz_iconv_close(zh->iconv_to_utf8);
if (zh->iconv_to_utf8 != 0)
yaz_iconv_close(zh->iconv_to_utf8);
{
ASSERTZH;
yaz_log(log_level, "zebra_record_encoding");
{
ASSERTZH;
yaz_log(log_level, "zebra_record_encoding");
xfree(zh->record_encoding);
zh->record_encoding = 0;
if (encoding)
xfree(zh->record_encoding);
zh->record_encoding = 0;
if (encoding)
assert(name);
assert(value);
yaz_log(log_level, "zebra_set_resource %s:%s", name, value);
assert(name);
assert(value);
yaz_log(log_level, "zebra_set_resource %s:%s", name, value);
res_set(zh->res, name, value);
}
res_set(zh->res, name, value);
}
ASSERTZH;
assert(name);
v = res_get_def (zh->res, name, (char *)defaultvalue);
ASSERTZH;
assert(name);
v = res_get_def (zh->res, name, (char *)defaultvalue);
yaz_log(log_level, "zebra_get_resource %s:%s", name, v);
return v;
}
yaz_log(log_level, "zebra_get_resource %s:%s", name, v);
return v;
}
-/* $Id: zebrash.c,v 1.35 2005-09-13 11:51:06 adam Exp $
+/* $Id: zebrash.c,v 1.36 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
/* If Zebra reports an error after an operation,
* append it to the outbuff and log it */
/* If Zebra reports an error after an operation,
* append it to the outbuff and log it */
-static void Zerrors ( WRBUF outbuff)
+static void Zerrors (WRBUF outbuff)
wrbuf_printf(outbuff, " Zebra error %d: %s, (%s)\n",
ec, zebra_errString (zh),
zebra_errAdd (zh) );
wrbuf_printf(outbuff, " Zebra error %d: %s, (%s)\n",
ec, zebra_errString (zh),
zebra_errAdd (zh) );
-/* $Id: zserver.c,v 1.143 2005-12-09 10:45:05 adam Exp $
+/* $Id: zserver.c,v 1.144 2005-12-09 11:33:32 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
-static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r)
+static void es_admin_request (bend_esrequest_rr *rr, ZebraHandle zh, Z_AdminEsRequest *r)
+ ZEBRA_RES res = ZEBRA_OK;
if (r->toKeep->databaseName)
{
yaz_log(YLOG_LOG, "adm request database %s", r->toKeep->databaseName);
if (r->toKeep->databaseName)
{
yaz_log(YLOG_LOG, "adm request database %s", r->toKeep->databaseName);
{
case Z_ESAdminOriginPartToKeep_reIndex:
yaz_log(YLOG_LOG, "adm-reindex");
{
case Z_ESAdminOriginPartToKeep_reIndex:
yaz_log(YLOG_LOG, "adm-reindex");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
break;
case Z_ESAdminOriginPartToKeep_truncate:
break;
case Z_ESAdminOriginPartToKeep_truncate:
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
yaz_log(YLOG_LOG, "adm-truncate");
break;
case Z_ESAdminOriginPartToKeep_drop:
yaz_log(YLOG_LOG, "adm-drop");
yaz_log(YLOG_LOG, "adm-truncate");
break;
case Z_ESAdminOriginPartToKeep_drop:
yaz_log(YLOG_LOG, "adm-drop");
- zebra_drop_database (zh, r->toKeep->databaseName);
+ res = zebra_drop_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_create:
yaz_log(YLOG_LOG, "adm-create %s", r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_create:
yaz_log(YLOG_LOG, "adm-create %s", r->toKeep->databaseName);
- zebra_create_database (zh, r->toKeep->databaseName);
+ res = zebra_create_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_import:
yaz_log(YLOG_LOG, "adm-import");
break;
case Z_ESAdminOriginPartToKeep_import:
yaz_log(YLOG_LOG, "adm-import");
- zebra_admin_import_begin (zh, r->toKeep->databaseName,
- r->toKeep->u.import->recordType);
+ res = zebra_admin_import_begin (zh, r->toKeep->databaseName,
+ r->toKeep->u.import->recordType);
break;
case Z_ESAdminOriginPartToKeep_refresh:
yaz_log(YLOG_LOG, "adm-refresh");
break;
case Z_ESAdminOriginPartToKeep_refresh:
yaz_log(YLOG_LOG, "adm-refresh");
break;
case Z_ESAdminOriginPartToKeep_shutdown:
yaz_log(YLOG_LOG, "shutdown");
break;
case Z_ESAdminOriginPartToKeep_shutdown:
yaz_log(YLOG_LOG, "shutdown");
- zebra_admin_shutdown(zh);
+ res = zebra_admin_shutdown(zh);
break;
case Z_ESAdminOriginPartToKeep_start:
yaz_log(YLOG_LOG, "start");
break;
case Z_ESAdminOriginPartToKeep_start:
yaz_log(YLOG_LOG, "start");
break;
default:
yaz_log(YLOG_LOG, "unknown admin");
break;
default:
yaz_log(YLOG_LOG, "unknown admin");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
+ if (res != ZEBRA_OK)
+ zebra_result(zh, &rr->errcode, &rr->errstring);
-static int es_admin (ZebraHandle zh, Z_Admin *r)
+static void es_admin (bend_esrequest_rr *rr, ZebraHandle zh, Z_Admin *r)
{
switch (r->which)
{
case Z_Admin_esRequest:
{
switch (r->which)
{
case Z_Admin_esRequest:
- es_admin_request (zh, r->u.esRequest);
- break;
- case Z_Admin_taskPackage:
- yaz_log (YLOG_LOG, "adm taskpackage (unhandled)");
- break;
+ es_admin_request (rr, zh, r->u.esRequest);
+ return;
+ yaz_log (YLOG_WARN, "adm taskpackage (unhandled)");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-task package (unhandled)";
}
int bend_segment (void *handle, bend_segment_rr *rr)
}
int bend_segment (void *handle, bend_segment_rr *rr)
}
else if (rr->esr->taskSpecificParameters->which == Z_External_ESAdmin)
{
}
else if (rr->esr->taskSpecificParameters->which == Z_External_ESAdmin)
{
- es_admin (zh, rr->esr->taskSpecificParameters->u.adminService);
-
- zebra_result (zh, &rr->errcode, &rr->errstring);
+ es_admin(rr, zh, rr->esr->taskSpecificParameters->u.adminService);
}
else if (rr->esr->taskSpecificParameters->which == Z_External_update)
{
}
else if (rr->esr->taskSpecificParameters->which == Z_External_update)
{