From 98578de25d24d3aa0e50bb190e603adee4e920ce Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 30 Aug 2005 10:44:56 +0000 Subject: [PATCH] No longer in use --- index/lockidx.c | 262 ------------------------------------------------------- index/locksrv.c | 138 ----------------------------- 2 files changed, 400 deletions(-) delete mode 100644 index/lockidx.c delete mode 100644 index/locksrv.c diff --git a/index/lockidx.c b/index/lockidx.c deleted file mode 100644 index b00d251..0000000 --- a/index/lockidx.c +++ /dev/null @@ -1,262 +0,0 @@ -/* $Id: lockidx.c,v 1.25 2005-06-14 20:28:54 adam Exp $ - Copyright (C) 1995-2005 - 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 -#include -#ifdef WIN32 -#include -#endif -#if HAVE_UNISTD_H -#include -#endif -#include -#include -#include - -#include "index.h" -#include "zserver.h" - -static ZebraLockHandle server_lock_main = NULL; -static ZebraLockHandle server_lock_cmt = NULL; -static ZebraLockHandle server_lock_org = NULL; - -int zebraIndexWait (ZebraHandle zh, int commitPhase) -{ - ZebraLockHandle h; - - if (server_lock_cmt) - zebra_unlock (server_lock_cmt); - else - { - char path[1024]; - - zebra_lock_prefix (zh->service->res, path); - strcat (path, FNAME_COMMIT_LOCK); - server_lock_cmt = zebra_lock_create (path, 1); - if (!server_lock_cmt) - { - yaz_log (YLOG_WARN|YLOG_ERRNO, "cannot create lock %s", path); - return -1; - } - } - if (server_lock_org) - zebra_unlock (server_lock_org); - else - { - char path[1024]; - - zebra_lock_prefix (zh->service->res, path); - strcat (path, FNAME_ORG_LOCK); - server_lock_org = zebra_lock_create (path, 1); - if (!server_lock_org) - { - yaz_log (YLOG_WARN|YLOG_ERRNO, "cannot create lock %s", path); - return -1; - } - } - if (commitPhase) - h = server_lock_cmt; - else - h = server_lock_org; - if (zebra_lock_nb (h)) - { -#ifndef WIN32 - if (errno != EWOULDBLOCK) - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "flock"); - exit (1); - } -#endif - if (commitPhase) - yaz_log (YLOG_LOG, "Waiting for lock cmt"); - else - yaz_log (YLOG_LOG, "Waiting for lock org"); - if (zebra_lock (h) == -1) - { - yaz_log (YLOG_FATAL, "flock"); - exit (1); - } - } - zebra_unlock (h); - return 0; -} - - -void zebraIndexLockMsg (ZebraHandle zh, const char *str) -{ - char path[1024]; - int l, r, fd; - - assert (server_lock_main); - fd = zebra_lock_fd (server_lock_main); - lseek (fd, 0L, SEEK_SET); - l = strlen(str); - r = write (fd, str, l); - if (r != l) - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "write lock file"); - exit (1); - } - zebra_lock_prefix (zh->service->res, path); - strcat (path, FNAME_TOUCH_TIME); - fd = creat (path, 0666); - close (fd); -} - -void zebraIndexUnlock (ZebraHandle zh) -{ - char path[1024]; - - zebra_lock_prefix (zh->service->res, path); - strcat (path, FNAME_MAIN_LOCK); -#ifdef WIN32 - zebra_lock_destroy (server_lock_main); - if (unlink (path) && errno != ENOENT) - yaz_log (YLOG_WARN|YLOG_ERRNO, "unlink %s failed", path); -#else - if (unlink (path) && errno != ENOENT) - yaz_log (YLOG_WARN|YLOG_ERRNO, "unlink %s failed", path); - zebra_lock_destroy (server_lock_main); -#endif - server_lock_main = 0; -} - -int zebraIndexLock (BFiles bfs, ZebraHandle zh, int commitNow, - const char *rval) -{ - char path[1024]; - char buf[256]; - int r; - - if (server_lock_main) - return 0; - - zebra_lock_prefix (zh->service->res, path); - strcat (path, FNAME_MAIN_LOCK); - while (1) - { - server_lock_main = zebra_lock_create (path, 2); - if (!server_lock_main) - { - server_lock_main = zebra_lock_create (path, 1); - if (!server_lock_main) - { - yaz_log (YLOG_FATAL, "couldn't obtain indexer lock"); - exit (1); - } - if (zebra_lock_nb (server_lock_main) == -1) - { -#ifdef WIN32 - yaz_log (YLOG_LOG, "waiting for other index process"); - zebra_lock (server_lock_main); - zebra_unlock (server_lock_main); - zebra_lock_destroy (server_lock_main); - continue; -#else - if (errno == EWOULDBLOCK) - { - yaz_log (YLOG_LOG, "waiting for other index process"); - zebra_lock (server_lock_main); - zebra_unlock (server_lock_main); - zebra_lock_destroy (server_lock_main); - continue; - } - else - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "flock %s", path); - exit (1); - } -#endif - } - else - { - int fd = zebra_lock_fd (server_lock_main); - - yaz_log (YLOG_WARN, "unlocked %s", path); - r = read (fd, buf, 256); - if (r == 0) - { - yaz_log (YLOG_WARN, "zero length %s", path); - zebra_lock_destroy (server_lock_main); - unlink (path); - continue; - } - else if (r == -1) - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "read %s", path); - exit (1); - } - if (*buf == 'r') - { - yaz_log (YLOG_WARN, "previous transaction didn't" - " reach commit"); - zebra_lock_destroy (server_lock_main); - bf_commitClean (bfs, rval); - unlink (path); - continue; - } - else if (*buf == 'd') - { - yaz_log (YLOG_WARN, "commit file wan't deleted after commit"); - zebra_lock_destroy (server_lock_main); - bf_commitClean (bfs, rval); - unlink (path); - continue; - } - else if (*buf == 'w') - { - yaz_log (YLOG_WARN, - "The lock file indicates that your index is"); - yaz_log (YLOG_WARN, "inconsistent. Perhaps the indexer"); - yaz_log (YLOG_WARN, "terminated abnormally in the previous"); - yaz_log (YLOG_WARN, "run. You can try to proceed by"); - yaz_log (YLOG_WARN, "deleting the file %s", path); - exit (1); - } - else if (*buf == 'c') - { - if (commitNow) - { - unlink (path); - zebra_lock_destroy (server_lock_main); - continue; - } - yaz_log (YLOG_FATAL, "previous transaction didn't" - " finish commit. Commit now!"); - exit (1); - } - else - { - yaz_log (YLOG_FATAL, "unknown id 0x%02x in %s", *buf, - path); - exit (1); - } - } - } - else - break; - } - zebra_lock (server_lock_main); - return 0; -} - diff --git a/index/locksrv.c b/index/locksrv.c deleted file mode 100644 index 0140718..0000000 --- a/index/locksrv.c +++ /dev/null @@ -1,138 +0,0 @@ -/* $Id: locksrv.c,v 1.20 2005-06-14 20:28:54 adam Exp $ - Copyright (C) 1995-2005 - 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 -#include -#ifdef WIN32 -#include -#endif -#if HAVE_UNISTD_H -#include -#endif -#include -#include -#include -#include - -#include "zserver.h" - -int zebra_server_lock_init (ZebraService zi) -{ - char path_prefix[1024]; - - zi->server_lock_cmt = NULL; - zi->server_lock_org = NULL; - - zebra_lock_prefix (zi->res, path_prefix); - zi->server_path_prefix = (char *) xmalloc (strlen(path_prefix)+1); - strcpy (zi->server_path_prefix, path_prefix); - - yaz_log (YLOG_DEBUG, "Locking system initialized"); - return 0; -} - -int zebra_server_lock_destroy (ZebraService zi) -{ - xfree (zi->server_path_prefix); - zebra_lock_destroy (zi->server_lock_cmt); - zebra_lock_destroy (zi->server_lock_org); - yaz_log (YLOG_DEBUG, "Locking system destroyed"); - return 0; -} - -int zebra_server_lock (ZebraService zi, int commitPhase) -{ - if (!zi->server_lock_cmt) - { - char path[1024]; - - strcpy (path, zi->server_path_prefix); - strcat (path, FNAME_COMMIT_LOCK); - if (!(zi->server_lock_cmt = zebra_lock_create (path, 0))) - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "create %s", path); - return -1; - } - assert (zi->server_lock_org == NULL); - - strcpy (path, zi->server_path_prefix); - strcat (path, FNAME_ORG_LOCK); - if (!(zi->server_lock_org = zebra_lock_create (path, 0))) - { - yaz_log (YLOG_FATAL|YLOG_ERRNO, "create %s", path); - return -1; - } - } - if (commitPhase) - { - yaz_log (YLOG_DEBUG, "Server locks org"); - zebra_lock (zi->server_lock_org); - } - else - { - yaz_log (YLOG_DEBUG, "Server locks cmt"); - zebra_lock (zi->server_lock_cmt); - } - return 0; -} - -void zebra_server_unlock (ZebraService zi, int commitPhase) -{ - if (zi->server_lock_org == NULL) - return; - yaz_log (YLOG_DEBUG, "Server unlocks org"); - zebra_unlock (zi->server_lock_org); - yaz_log (YLOG_DEBUG, "Server unlocks cmt"); - zebra_unlock (zi->server_lock_cmt); -} - -int zebra_server_lock_get_state (ZebraService zi, time_t *timep) -{ - char path[1024]; - char buf[256]; - int fd; - struct stat xstat; - - strcpy (path, zi->server_path_prefix); - strcat (path, FNAME_TOUCH_TIME); - if (stat (path, &xstat) == -1) - *timep = 1; - else - *timep = xstat.st_mtime; - - strcpy (path, zi->server_path_prefix); - strcat (path, FNAME_MAIN_LOCK); - fd = open (path, O_BINARY|O_RDONLY); - if (fd == -1) - { - *buf = 0; - return 0; - } - if (read (fd, buf, 2) == 0) - { - *buf = 0; - return 0; - } - close (fd); - return *buf; -} -- 1.7.10.4