Skip to content

Commit e4b3032

Browse files
committed
add --nolock option
1 parent 798044e commit e4b3032

File tree

2 files changed

+49
-33
lines changed

2 files changed

+49
-33
lines changed

tools/src/main/python/opengrok_tools/indexer.py

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# CDDL HEADER END
1919

2020
#
21-
# Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved.
21+
# Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
2222
# Portions Copyright (c) 2017-2018, Chris Fraire <[email protected]>.
2323
#
2424

@@ -59,11 +59,48 @@ def get_project_from_options(options):
5959
return None
6060

6161

62+
def run_indexer(logger, args):
63+
"""
64+
Run the indexer and wait for its completion.
65+
:return: FAILURE_EXITVAL or SUCCESS_EXITVAL
66+
"""
67+
if args.doprint is None:
68+
logger.debug("Console logging is enabled by default")
69+
doprint = True
70+
else:
71+
doprint = args.doprint[0]
72+
logger.debug("Console logging: {}".format(doprint))
73+
74+
optional_args = os.environ.get("OPENGROK_INDEXER_OPTIONAL_ARGS")
75+
options = args.options
76+
if optional_args and len(optional_args) > 0 and options:
77+
logger.debug("adding optional indexer arguments: {}".
78+
format(optional_args))
79+
if options:
80+
options.extend(optional_args.split())
81+
82+
indexer = Indexer(options, logger=logger, java=args.java,
83+
jar=args.jar, java_opts=args.java_opts,
84+
env_vars=args.environment, doprint=doprint)
85+
indexer.execute()
86+
ret = indexer.getretcode()
87+
if ret is None or ret != SUCCESS_EXITVAL:
88+
# The output is already printed thanks to 'doprint' above.
89+
logger.error("Indexer command failed (return code {})".
90+
format(ret))
91+
return FAILURE_EXITVAL
92+
93+
return SUCCESS_EXITVAL
94+
95+
6296
def main():
6397
parser = argparse.ArgumentParser(description='OpenGrok indexer wrapper',
6498
parents=[get_java_parser()])
6599
parser.add_argument('-C', '--no_ctags_check', action='store_true',
66100
default=False, help='Suppress checking for ctags')
101+
parser.add_argument('--nolock', action='store_true', default=False,
102+
help='do not acquire lock that prevents multiple '
103+
'instances from running')
67104

68105
try:
69106
args = parser.parse_args()
@@ -79,43 +116,22 @@ def main():
79116
if not args.no_ctags_check and not FindCtags(logger):
80117
logger.warning("Unable to determine Universal CTags command")
81118

82-
if args.doprint is None:
83-
logger.debug("Console logging is enabled by default")
84-
doprint = True
85-
else:
86-
doprint = args.doprint[0]
87-
logger.debug("Console logging: {}".format(doprint))
88-
89119
project = get_project_from_options(args.options)
90120
if project:
91121
lockfile = project + "-indexer"
92122
else:
93123
lockfile = os.path.basename(sys.argv[0])
94124

95-
lock = FileLock(os.path.join(tempfile.gettempdir(), lockfile + ".lock"))
96-
try:
97-
with lock.acquire(timeout=0):
98-
optional_args = os.environ.get("OPENGROK_INDEXER_OPTIONAL_ARGS")
99-
options = args.options
100-
if optional_args and len(optional_args) > 0 and options:
101-
logger.debug("adding optional indexer arguments: {}".
102-
format(optional_args))
103-
if options:
104-
options.extend(optional_args.split())
105-
106-
indexer = Indexer(options, logger=logger, java=args.java,
107-
jar=args.jar, java_opts=args.java_opts,
108-
env_vars=args.environment, doprint=doprint)
109-
indexer.execute()
110-
ret = indexer.getretcode()
111-
if ret is None or ret != SUCCESS_EXITVAL:
112-
# The output is already printed thanks to 'doprint' above.
113-
logger.error("Indexer command failed (return code {})".
114-
format(ret))
115-
return FAILURE_EXITVAL
116-
except Timeout:
117-
logger.warning("Already running, exiting.")
118-
return FAILURE_EXITVAL
125+
if args.nolock:
126+
return run_indexer(logger, args)
127+
else:
128+
lock = FileLock(os.path.join(tempfile.gettempdir(), lockfile + ".lock"))
129+
try:
130+
with lock.acquire(timeout=0):
131+
return run_indexer(logger, args)
132+
except Timeout:
133+
logger.warning("Already running, exiting.")
134+
return FAILURE_EXITVAL
119135

120136

121137
if __name__ == '__main__':

tools/src/main/python/opengrok_tools/sync.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def main():
160160
parser.add_argument('-f', '--driveon', action='store_true', default=False,
161161
help='continue command sequence processing even '
162162
'if one of the commands requests break')
163-
parser.add_argument('--nolock', action='store_false', default=True,
163+
parser.add_argument('--nolock', action='store_true', default=False,
164164
help='do not acquire lock that prevents multiple '
165165
'instances from running')
166166
parser.add_argument('--api_timeout', type=int, default=3,

0 commit comments

Comments
 (0)