Graceful error (2) if lock files cannot be accessed
[idzebra-moved-to-github.git] / index / zebraapi.c
index 093b950..dc0913f 100644 (file)
@@ -1,9 +1,26 @@
-/*
- * Copyright (C) 1995-2002, Index Data
- * All rights reserved.
- *
- * $Id: zebraapi.c,v 1.64 2002-07-29 20:04:24 adam Exp $
- */
+/* $Id: zebraapi.c,v 1.67 2002-08-18 10:20:35 adam Exp $
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+   Index Data Aps
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Zebra; see the file LICENSE.zebra.  If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+*/
+
+
 
 #include <assert.h>
 #include <stdio.h>
@@ -59,7 +76,7 @@ ZebraHandle zebra_open (ZebraService zs)
         return 0;
 
     zh = (ZebraHandle) xmalloc (sizeof(*zh));
-    yaz_log (LOG_LOG, "zebra_open zs=%p returns %p", zs, zh);
+    yaz_log (LOG_DEBUG, "zebra_open zs=%p returns %p", zs, zh);
 
     zh->service = zs;
     zh->reg = 0;          /* no register attached yet */
@@ -120,7 +137,7 @@ ZebraService zebra_start (const char *configName)
     {
         ZebraService zh = xmalloc (sizeof(*zh));
 
-       yaz_log (LOG_LOG, "Read resources `%s'", configName);
+       yaz_log (LOG_DEBUG, "Read resources `%s'", configName);
         
         zh->global_res = res;
         zh->configName = xstrdup(configName);
@@ -165,7 +182,7 @@ struct zebra_register *zebra_register_open (ZebraService zs, const char *name,
 
     assert (res);
 
-    yaz_log (LOG_LOG, "zebra_register_open rw = %d useshadow=%d p=%p",
+    yaz_log (LOG_DEBUG, "zebra_register_open rw = %d useshadow=%d p=%p",
              rw, useshadow, reg);
 
     reg->dh = data1_createx (DATA1_FLAG_XML);
@@ -313,7 +330,7 @@ struct zebra_register *zebra_register_open (ZebraService zs, const char *name,
        return 0;
     }
     reg->active = 2;
-    yaz_log (LOG_LOG, "zebra_register_open ok p=%p", reg);
+    yaz_log (LOG_DEBUG, "zebra_register_open ok p=%p", reg);
     return reg;
 }
 
@@ -334,7 +351,7 @@ void zebra_admin_start (ZebraHandle zh)
 
 static void zebra_register_close (ZebraService zs, struct zebra_register *reg)
 {
-    yaz_log(LOG_LOG, "zebra_register_close p=%p", reg);
+    yaz_log(LOG_DEBUG, "zebra_register_close p=%p", reg);
     reg->stop_flag = 0;
     zebra_chdir (zs);
     if (reg->records)
@@ -366,7 +383,7 @@ static void zebra_register_close (ZebraService zs, struct zebra_register *reg)
     xfree (reg->key_buf);
     xfree (reg->name);
     xfree (reg);
-    yaz_log (LOG_LOG, "zebra_register_close 2");
+    yaz_log(LOG_DEBUG, "zebra_register_close 2");
 }
 
 void zebra_stop(ZebraService zs)
@@ -403,7 +420,7 @@ void zebra_close (ZebraHandle zh)
         return;
 
     zs = zh->service;
-    yaz_log (LOG_LOG, "zebra_close zh=%p", zh);
+    yaz_log (LOG_DEBUG, "zebra_close zh=%p", zh);
     if (!zh)
        return ;
     resultSetDestroy (zh, -1, 0, 0);
@@ -677,6 +694,11 @@ int zebra_select_databases (ZebraHandle zh, int num_bases,
         zh->errCode = 109;
         return -1;
     }
+    if (!zh->lock_normal || !zh->lock_shadow)
+    {
+        zh->errCode = 2;
+       return -1;
+    }
     return 0;
 }
 
@@ -991,6 +1013,12 @@ int zebra_begin_read (ZebraHandle zh)
         zh->errCode = 109;
         return -1;
     }
+    if (!zh->lock_normal || !zh->lock_shadow)
+    {
+        (zh->trans_no)--;
+        zh->errCode = 2;
+       return -1;
+    }
     zebra_get_state (zh, &val, &seqno);
     if (val == 'd')
         val = 'o';