-/* $Id: main.c,v 1.103 2003-03-25 19:56:01 adam Exp $
+/* $Id: main.c,v 1.104 2003-05-20 21:39:57 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
Index Data Aps
if (!trans_started)
{
trans_started=1;
- zebra_begin_trans (zh, 1);
+ if (zebra_begin_trans (zh, 1))
+ exit(1);
}
-
switch (cmd)
{
case 'u':
-/* $Id: zebraapi.c,v 1.101 2003-05-20 13:52:41 adam Exp $
+/* $Id: zebraapi.c,v 1.102 2003-05-20 21:39:57 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
if (zebra_select_database (zh, database))
return;
- zebra_begin_trans (zh, 1);
+ if (zebra_begin_trans (zh, 1))
+ return;
zs = zh->service;
/* announce database */
int zebra_begin_trans (ZebraHandle zh, int rw)
{
+ yaz_log(LOG_LOG, "zebra_begin_trans rw=%d trans=%d", rw, zh->trans_no);
if (!zh->res)
{
zh->errCode = 2;
zh->errCode=0;
- yaz_log (LOG_LOG, "zebra_begin_trans");
-
zh->records_inserted = 0;
zh->records_updated = 0;
zh->records_deleted = 0;
zh->path_reg);
if (zh->reg)
zh->reg->seqno = seqno;
+ else
+ {
+ zebra_set_state (zh, 'o', seqno);
+
+ zebra_unlock (zh->lock_shadow);
+ zebra_unlock (zh->lock_normal);
+
+ zh->trans_no--;
+ zh->trans_w_no = 0;
+
+ zh->errCode = 2;
+ zh->errString = "zebra_begin_trans: cannot open register";
+ yaz_log(LOG_FATAL, zh->errString);
+ return -1;
+ }
}
else
{
zh->res, zh->path_reg);
if (!zh->reg)
{
+ zebra_unlock (zh->lock_normal);
+ zebra_unlock (zh->lock_shadow);
+ zh->trans_no--;
zh->errCode = 109;
return -1;
}