jbasdf-muck-solr 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGE_LOG +239 -0
- data/LICENSE +19 -0
- data/README.markdown +118 -0
- data/README.rdoc +107 -0
- data/Rakefile +99 -0
- data/TESTING_THE_PLUGIN +25 -0
- data/VERSION.yml +4 -0
- data/config/solr.yml +15 -0
- data/config/solr_environment.rb +32 -0
- data/lib/acts_as_solr/acts_methods.rb +352 -0
- data/lib/acts_as_solr/class_methods.rb +236 -0
- data/lib/acts_as_solr/common_methods.rb +89 -0
- data/lib/acts_as_solr/deprecation.rb +61 -0
- data/lib/acts_as_solr/instance_methods.rb +165 -0
- data/lib/acts_as_solr/lazy_document.rb +18 -0
- data/lib/acts_as_solr/parser_methods.rb +203 -0
- data/lib/acts_as_solr/search_results.rb +68 -0
- data/lib/acts_as_solr/solr_fixtures.rb +13 -0
- data/lib/acts_as_solr/tasks/database.rake +16 -0
- data/lib/acts_as_solr/tasks/solr.rake +135 -0
- data/lib/acts_as_solr/tasks/test.rake +5 -0
- data/lib/acts_as_solr/tasks.rb +10 -0
- data/lib/acts_as_solr.rb +65 -0
- data/lib/solr/connection.rb +177 -0
- data/lib/solr/document.rb +75 -0
- data/lib/solr/exception.rb +13 -0
- data/lib/solr/field.rb +36 -0
- data/lib/solr/importer/array_mapper.rb +26 -0
- data/lib/solr/importer/delimited_file_source.rb +38 -0
- data/lib/solr/importer/hpricot_mapper.rb +27 -0
- data/lib/solr/importer/mapper.rb +51 -0
- data/lib/solr/importer/solr_source.rb +41 -0
- data/lib/solr/importer/xpath_mapper.rb +35 -0
- data/lib/solr/importer.rb +19 -0
- data/lib/solr/indexer.rb +52 -0
- data/lib/solr/request/add_document.rb +58 -0
- data/lib/solr/request/base.rb +36 -0
- data/lib/solr/request/commit.rb +29 -0
- data/lib/solr/request/delete.rb +48 -0
- data/lib/solr/request/dismax.rb +46 -0
- data/lib/solr/request/index_info.rb +22 -0
- data/lib/solr/request/modify_document.rb +46 -0
- data/lib/solr/request/optimize.rb +19 -0
- data/lib/solr/request/ping.rb +36 -0
- data/lib/solr/request/select.rb +54 -0
- data/lib/solr/request/spellcheck.rb +30 -0
- data/lib/solr/request/standard.rb +402 -0
- data/lib/solr/request/update.rb +23 -0
- data/lib/solr/request.rb +26 -0
- data/lib/solr/response/add_document.rb +17 -0
- data/lib/solr/response/base.rb +42 -0
- data/lib/solr/response/commit.rb +15 -0
- data/lib/solr/response/delete.rb +13 -0
- data/lib/solr/response/dismax.rb +8 -0
- data/lib/solr/response/index_info.rb +26 -0
- data/lib/solr/response/modify_document.rb +17 -0
- data/lib/solr/response/optimize.rb +14 -0
- data/lib/solr/response/ping.rb +26 -0
- data/lib/solr/response/ruby.rb +42 -0
- data/lib/solr/response/select.rb +17 -0
- data/lib/solr/response/spellcheck.rb +20 -0
- data/lib/solr/response/standard.rb +60 -0
- data/lib/solr/response/xml.rb +39 -0
- data/lib/solr/response.rb +27 -0
- data/lib/solr/solrtasks.rb +27 -0
- data/lib/solr/util.rb +32 -0
- data/lib/solr/xml.rb +44 -0
- data/lib/solr.rb +26 -0
- data/solr/CHANGES.txt +1207 -0
- data/solr/LICENSE.txt +712 -0
- data/solr/NOTICE.txt +90 -0
- data/solr/etc/jetty.xml +205 -0
- data/solr/etc/webdefault.xml +379 -0
- data/solr/lib/easymock.jar +0 -0
- data/solr/lib/jetty-6.1.3.jar +0 -0
- data/solr/lib/jetty-util-6.1.3.jar +0 -0
- data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/solr/lib/servlet-api-2.4.jar +0 -0
- data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
- data/solr/lib/xpp3-1.1.3.4.O.jar +0 -0
- data/solr/solr/README.txt +52 -0
- data/solr/solr/bin/abc +176 -0
- data/solr/solr/bin/abo +176 -0
- data/solr/solr/bin/backup +108 -0
- data/solr/solr/bin/backupcleaner +142 -0
- data/solr/solr/bin/commit +128 -0
- data/solr/solr/bin/optimize +129 -0
- data/solr/solr/bin/readercycle +129 -0
- data/solr/solr/bin/rsyncd-disable +77 -0
- data/solr/solr/bin/rsyncd-enable +76 -0
- data/solr/solr/bin/rsyncd-start +145 -0
- data/solr/solr/bin/rsyncd-stop +105 -0
- data/solr/solr/bin/scripts-util +83 -0
- data/solr/solr/bin/snapcleaner +148 -0
- data/solr/solr/bin/snapinstaller +168 -0
- data/solr/solr/bin/snappuller +248 -0
- data/solr/solr/bin/snappuller-disable +77 -0
- data/solr/solr/bin/snappuller-enable +77 -0
- data/solr/solr/bin/snapshooter +109 -0
- data/solr/solr/conf/admin-extra.html +31 -0
- data/solr/solr/conf/protwords.txt +21 -0
- data/solr/solr/conf/schema.xml +126 -0
- data/solr/solr/conf/scripts.conf +24 -0
- data/solr/solr/conf/solrconfig.xml +458 -0
- data/solr/solr/conf/stopwords.txt +57 -0
- data/solr/solr/conf/synonyms.txt +31 -0
- data/solr/solr/conf/xslt/example.xsl +132 -0
- data/solr/solr/conf/xslt/example_atom.xsl +63 -0
- data/solr/solr/conf/xslt/example_rss.xsl +62 -0
- data/solr/start.jar +0 -0
- data/solr/webapps/solr.war +0 -0
- data/test/config/solr.yml +2 -0
- data/test/db/connections/mysql/connection.rb +10 -0
- data/test/db/connections/sqlite/connection.rb +8 -0
- data/test/db/migrate/001_create_books.rb +15 -0
- data/test/db/migrate/002_create_movies.rb +12 -0
- data/test/db/migrate/003_create_categories.rb +11 -0
- data/test/db/migrate/004_create_electronics.rb +16 -0
- data/test/db/migrate/005_create_authors.rb +12 -0
- data/test/db/migrate/006_create_postings.rb +9 -0
- data/test/db/migrate/007_create_posts.rb +13 -0
- data/test/db/migrate/008_create_gadgets.rb +11 -0
- data/test/fixtures/authors.yml +9 -0
- data/test/fixtures/books.yml +13 -0
- data/test/fixtures/categories.yml +7 -0
- data/test/fixtures/db_definitions/mysql.sql +41 -0
- data/test/fixtures/electronics.yml +49 -0
- data/test/fixtures/movies.yml +9 -0
- data/test/fixtures/postings.yml +10 -0
- data/test/functional/acts_as_solr_test.rb +413 -0
- data/test/functional/association_indexing_test.rb +37 -0
- data/test/functional/faceted_search_test.rb +163 -0
- data/test/functional/multi_solr_search_test.rb +57 -0
- data/test/models/author.rb +10 -0
- data/test/models/book.rb +10 -0
- data/test/models/category.rb +8 -0
- data/test/models/electronic.rb +25 -0
- data/test/models/gadget.rb +9 -0
- data/test/models/movie.rb +17 -0
- data/test/models/novel.rb +2 -0
- data/test/models/post.rb +3 -0
- data/test/models/posting.rb +11 -0
- data/test/test_helper.rb +54 -0
- data/test/unit/acts_methods_shoulda.rb +68 -0
- data/test/unit/class_methods_shoulda.rb +85 -0
- data/test/unit/common_methods_shoulda.rb +111 -0
- data/test/unit/instance_methods_shoulda.rb +318 -0
- data/test/unit/lazy_document_shoulda.rb +34 -0
- data/test/unit/parser_instance.rb +19 -0
- data/test/unit/parser_methods_shoulda.rb +268 -0
- data/test/unit/solr_instance.rb +49 -0
- data/test/unit/test_helper.rb +24 -0
- metadata +241 -0
data/solr/solr/bin/abo
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
|
5
|
+
# this work for additional information regarding copyright ownership.
|
|
6
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
+
# (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
# Shell script to make an Atomic Backup after Optimize of
|
|
19
|
+
# a Solr Lucene collection.
|
|
20
|
+
|
|
21
|
+
orig_dir=$(pwd)
|
|
22
|
+
cd ${0%/*}/..
|
|
23
|
+
solr_root=$(pwd)
|
|
24
|
+
cd ${orig_dir}
|
|
25
|
+
curl_url=""
|
|
26
|
+
|
|
27
|
+
unset solr_hostname solr_port data_dir webapp_name user verbose debug solr_url
|
|
28
|
+
. ${solr_root}/bin/scripts-util
|
|
29
|
+
|
|
30
|
+
# set up variables
|
|
31
|
+
prog=${0##*/}
|
|
32
|
+
log=${solr_root}/logs/${prog}.log
|
|
33
|
+
|
|
34
|
+
# define usage string
|
|
35
|
+
USAGE="\
|
|
36
|
+
usage: $prog [-h hostname] [-p port] [-d dir] [-w webapp_name] [-u username] [-U url] [-v] [-V]
|
|
37
|
+
-h specify Solr hostname (defaults to localhost)
|
|
38
|
+
-p specify Solr port number
|
|
39
|
+
-w specify name of Solr webapp (defaults to solr)
|
|
40
|
+
-u specify user to sudo to before running script
|
|
41
|
+
-U specify full update url (overrides -h,-p,-w parameters)
|
|
42
|
+
-d specify directory holding index data (defaults to data)
|
|
43
|
+
-v increase verbosity
|
|
44
|
+
-V output debugging info
|
|
45
|
+
"
|
|
46
|
+
|
|
47
|
+
# parse args
|
|
48
|
+
while getopts h:p:d:w:u:U:vV OPTION
|
|
49
|
+
do
|
|
50
|
+
case $OPTION in
|
|
51
|
+
h)
|
|
52
|
+
solr_hostname="$OPTARG"
|
|
53
|
+
;;
|
|
54
|
+
p)
|
|
55
|
+
solr_port="$OPTARG"
|
|
56
|
+
;;
|
|
57
|
+
d)
|
|
58
|
+
data_dir="$OPTARG"
|
|
59
|
+
;;
|
|
60
|
+
w)
|
|
61
|
+
webapp_name="$OPTARG"
|
|
62
|
+
;;
|
|
63
|
+
u)
|
|
64
|
+
user="$OPTARG"
|
|
65
|
+
;;
|
|
66
|
+
U)
|
|
67
|
+
solr_url="$OPTARG"
|
|
68
|
+
;;
|
|
69
|
+
v)
|
|
70
|
+
verbose="v"
|
|
71
|
+
;;
|
|
72
|
+
V)
|
|
73
|
+
debug="V"
|
|
74
|
+
;;
|
|
75
|
+
*)
|
|
76
|
+
echo "$USAGE"
|
|
77
|
+
exit 1
|
|
78
|
+
esac
|
|
79
|
+
done
|
|
80
|
+
|
|
81
|
+
[[ -n $debug ]] && set -x
|
|
82
|
+
|
|
83
|
+
# use default value for data_dir if not specified
|
|
84
|
+
# relative path starts at ${solr_root}
|
|
85
|
+
if [[ -z ${data_dir} ]]
|
|
86
|
+
then
|
|
87
|
+
data_dir=${solr_root}/data
|
|
88
|
+
elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]]
|
|
89
|
+
then
|
|
90
|
+
data_dir=${solr_root}/${data_dir}
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
if [[ -n ${solr_url} ]]
|
|
94
|
+
then
|
|
95
|
+
curl_url=${solr_url}
|
|
96
|
+
else
|
|
97
|
+
if [[ -z ${solr_port} ]]
|
|
98
|
+
then
|
|
99
|
+
echo "Solr port number missing in $confFile or command line."
|
|
100
|
+
echo "$USAGE"
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
# use default hostname if not specified
|
|
105
|
+
if [[ -z ${solr_hostname} ]]
|
|
106
|
+
then
|
|
107
|
+
solr_hostname=localhost
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# use default webapp name if not specified
|
|
111
|
+
if [[ -z ${webapp_name} ]]
|
|
112
|
+
then
|
|
113
|
+
webapp_name=solr
|
|
114
|
+
fi
|
|
115
|
+
curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
fixUser "$@"
|
|
119
|
+
|
|
120
|
+
start=`date +"%s"`
|
|
121
|
+
|
|
122
|
+
logMessage started by $oldwhoami
|
|
123
|
+
logMessage command: $0 $@
|
|
124
|
+
|
|
125
|
+
logMessage sending optimize to Solr server at ${curl_url}
|
|
126
|
+
rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<optimize/>"`
|
|
127
|
+
if [[ $? != 0 ]]
|
|
128
|
+
then
|
|
129
|
+
logMessage failed to connect to Solr server at ${curl_url}
|
|
130
|
+
logMessage optimize failed
|
|
131
|
+
logExit failed 1
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
# check status of optimize request
|
|
135
|
+
echo $rs | grep '<result.*status="0"' > /dev/null 2>&1
|
|
136
|
+
if [[ $? != 0 ]]
|
|
137
|
+
then
|
|
138
|
+
logMessage optimize request to Solr at ${curl_url} failed:
|
|
139
|
+
logMessage $rs
|
|
140
|
+
logExit failed 2
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# successful optimize creates a snapshot file synchronously
|
|
144
|
+
lastsnap=`ls -drt1 ${data_dir}/snapshot.* | tail -1 `
|
|
145
|
+
|
|
146
|
+
if [[ $lastsnap == "" ]]
|
|
147
|
+
then
|
|
148
|
+
logMessage commit did not create snapshot at ${curl_url}, backup failed:
|
|
149
|
+
logExit failed 3
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
name=backup.${lastsnap##*snapshot.}
|
|
153
|
+
temp=temp-${name}
|
|
154
|
+
|
|
155
|
+
if [[ -d ${data_dir}/${name} ]]
|
|
156
|
+
then
|
|
157
|
+
logMessage backup directory ${data_dir}/${name} already exists
|
|
158
|
+
logExit aborted 1
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
if [[ -d ${data_dir}/${temp} ]]
|
|
162
|
+
then
|
|
163
|
+
logMessage backingup of ${data_dir}/${name} in progress
|
|
164
|
+
logExit aborted 1
|
|
165
|
+
fi
|
|
166
|
+
logMessage making backup ${data_dir}/${name}
|
|
167
|
+
|
|
168
|
+
# clean up after INT/TERM
|
|
169
|
+
trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${temp};logExit aborted 13' INT TERM
|
|
170
|
+
|
|
171
|
+
# make a backup using hard links into temporary location
|
|
172
|
+
# then move it into place atomically
|
|
173
|
+
cp -lr ${lastsnap} ${data_dir}/${temp}
|
|
174
|
+
mv ${data_dir}/${temp} ${data_dir}/${name}
|
|
175
|
+
|
|
176
|
+
logExit ended 0
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
|
5
|
+
# this work for additional information regarding copyright ownership.
|
|
6
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
+
# (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
# Shell script to make a backup of a Solr Lucene collection.
|
|
19
|
+
|
|
20
|
+
orig_dir=$(pwd)
|
|
21
|
+
cd ${0%/*}/..
|
|
22
|
+
solr_root=$(pwd)
|
|
23
|
+
cd ${orig_dir}
|
|
24
|
+
|
|
25
|
+
unset data_dir user verbose debug
|
|
26
|
+
. ${solr_root}/bin/scripts-util
|
|
27
|
+
|
|
28
|
+
# set up variables
|
|
29
|
+
prog=${0##*/}
|
|
30
|
+
log=${solr_root}/logs/${prog}.log
|
|
31
|
+
|
|
32
|
+
# define usage string
|
|
33
|
+
USAGE="\
|
|
34
|
+
usage: $prog [-d dir] [-u username] [-v]
|
|
35
|
+
-d specify directory holding index data
|
|
36
|
+
-u specify user to sudo to before running script
|
|
37
|
+
-v increase verbosity
|
|
38
|
+
-V output debugging info
|
|
39
|
+
"
|
|
40
|
+
|
|
41
|
+
# parse args
|
|
42
|
+
while getopts d:u:vV OPTION
|
|
43
|
+
do
|
|
44
|
+
case $OPTION in
|
|
45
|
+
d)
|
|
46
|
+
data_dir="$OPTARG"
|
|
47
|
+
;;
|
|
48
|
+
u)
|
|
49
|
+
user="$OPTARG"
|
|
50
|
+
;;
|
|
51
|
+
v)
|
|
52
|
+
verbose="v"
|
|
53
|
+
;;
|
|
54
|
+
V)
|
|
55
|
+
debug="V"
|
|
56
|
+
;;
|
|
57
|
+
*)
|
|
58
|
+
echo "$USAGE"
|
|
59
|
+
exit 1
|
|
60
|
+
esac
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
[[ -n $debug ]] && set -x
|
|
64
|
+
|
|
65
|
+
# use default value for data_dir if not specified
|
|
66
|
+
# relative path starts at ${solr_root}
|
|
67
|
+
if [[ -z ${data_dir} ]]
|
|
68
|
+
then
|
|
69
|
+
data_dir=${solr_root}/data
|
|
70
|
+
elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]]
|
|
71
|
+
then
|
|
72
|
+
data_dir=${solr_root}/${data_dir}
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
fixUser "$@"
|
|
76
|
+
|
|
77
|
+
start=`date +"%s"`
|
|
78
|
+
|
|
79
|
+
logMessage started by $oldwhoami
|
|
80
|
+
logMessage command: $0 $@
|
|
81
|
+
|
|
82
|
+
name=backup.`date +"%Y%m%d%H%M%S"`
|
|
83
|
+
temp=temp-${name}
|
|
84
|
+
|
|
85
|
+
if [[ -d ${data_dir}/${name} ]]
|
|
86
|
+
then
|
|
87
|
+
logMessage backup directory ${data_dir}/${name} already exists
|
|
88
|
+
logExit aborted 1
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
if [[ -d ${data_dir}/${temp} ]]
|
|
92
|
+
then
|
|
93
|
+
logMessage backingup of ${data_dir}/${name} in progress
|
|
94
|
+
logExit aborted 1
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# clean up after INT/TERM
|
|
98
|
+
trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${temp};logExit aborted 13' INT TERM
|
|
99
|
+
|
|
100
|
+
logMessage making backup ${data_dir}/${name}
|
|
101
|
+
|
|
102
|
+
# make a backup using hard links into temporary location
|
|
103
|
+
# then move it into place atomically
|
|
104
|
+
cp -lr ${data_dir}/index ${data_dir}/${temp}
|
|
105
|
+
mv ${data_dir}/${temp} ${data_dir}/${name}
|
|
106
|
+
|
|
107
|
+
logExit ended 0
|
|
108
|
+
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
|
5
|
+
# this work for additional information regarding copyright ownership.
|
|
6
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
+
# (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
# Shell script to clean up backups of a Solr Lucene collection.
|
|
19
|
+
|
|
20
|
+
orig_dir=$(pwd)
|
|
21
|
+
cd ${0%/*}/..
|
|
22
|
+
solr_root=$(pwd)
|
|
23
|
+
cd ${orig_dir}
|
|
24
|
+
|
|
25
|
+
unset days num data_dir user verbose debug
|
|
26
|
+
. ${solr_root}/bin/scripts-util
|
|
27
|
+
|
|
28
|
+
# set up variables
|
|
29
|
+
prog=${0##*/}
|
|
30
|
+
log=${solr_root}/logs/${prog}.log
|
|
31
|
+
|
|
32
|
+
# define usage string
|
|
33
|
+
USAGE="\
|
|
34
|
+
usage: $prog -D <days> | -N <num> [-d dir] [-u username] [-v]
|
|
35
|
+
-D <days> cleanup backups more than <days> days old
|
|
36
|
+
-N <num> keep the most recent <num> number of backups and
|
|
37
|
+
cleanup up the remaining ones that are not being pulled
|
|
38
|
+
-d specify directory holding index data
|
|
39
|
+
-u specify user to sudo to before running script
|
|
40
|
+
-v increase verbosity
|
|
41
|
+
-V output debugging info
|
|
42
|
+
"
|
|
43
|
+
|
|
44
|
+
# parse args
|
|
45
|
+
while getopts D:N:d:u:vV OPTION
|
|
46
|
+
do
|
|
47
|
+
case $OPTION in
|
|
48
|
+
D)
|
|
49
|
+
days="$OPTARG"
|
|
50
|
+
;;
|
|
51
|
+
N)
|
|
52
|
+
num="$OPTARG"
|
|
53
|
+
;;
|
|
54
|
+
d)
|
|
55
|
+
data_dir="$OPTARG"
|
|
56
|
+
;;
|
|
57
|
+
u)
|
|
58
|
+
user="$OPTARG"
|
|
59
|
+
;;
|
|
60
|
+
v)
|
|
61
|
+
verbose="v"
|
|
62
|
+
;;
|
|
63
|
+
V)
|
|
64
|
+
debug="V"
|
|
65
|
+
;;
|
|
66
|
+
*)
|
|
67
|
+
echo "$USAGE"
|
|
68
|
+
exit 1
|
|
69
|
+
esac
|
|
70
|
+
done
|
|
71
|
+
|
|
72
|
+
[[ -n $debug ]] && set -x
|
|
73
|
+
|
|
74
|
+
if [[ -z ${days} && -z ${num} ]]
|
|
75
|
+
then
|
|
76
|
+
echo "$USAGE"
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
fixUser "$@"
|
|
81
|
+
|
|
82
|
+
# use default value for data_dir if not specified
|
|
83
|
+
# relative path starts at ${solr_root}
|
|
84
|
+
if [[ -z ${data_dir} ]]
|
|
85
|
+
then
|
|
86
|
+
data_dir=${solr_root}/data
|
|
87
|
+
elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]]
|
|
88
|
+
then
|
|
89
|
+
data_dir=${solr_root}/${data_dir}
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
function remove
|
|
93
|
+
{
|
|
94
|
+
logMessage removing backup $1
|
|
95
|
+
/bin/rm -rf $1
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
start=`date +"%s"`
|
|
99
|
+
|
|
100
|
+
logMessage started by $oldwhoami
|
|
101
|
+
logMessage command: $0 $@
|
|
102
|
+
|
|
103
|
+
# trap control-c
|
|
104
|
+
trap 'echo "caught INT/TERM, exiting now but partial cleanup may have already occured";logExit aborted 13' INT TERM
|
|
105
|
+
|
|
106
|
+
if [[ -n ${days} ]]
|
|
107
|
+
then
|
|
108
|
+
#is maxdepth supported?
|
|
109
|
+
find ${data_dir} -maxdepth 0 -name foobar >/dev/null 2>&1
|
|
110
|
+
if [ $? = 0 ]; then
|
|
111
|
+
maxdepth="-maxdepth 1"
|
|
112
|
+
else
|
|
113
|
+
unset maxdepth
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
logMessage cleaning up backups more than ${days} days old
|
|
117
|
+
for i in `find ${data_dir} ${maxdepth} -name 'backup.*' -mtime +${days} -print`
|
|
118
|
+
do
|
|
119
|
+
remove $i
|
|
120
|
+
done
|
|
121
|
+
elif [[ -n ${num} ]]
|
|
122
|
+
then
|
|
123
|
+
logMessage cleaning up all backups except for the most recent ${num} ones
|
|
124
|
+
unset backups count
|
|
125
|
+
backups=`ls -cd ${data_dir}/backup.* 2>/dev/null`
|
|
126
|
+
if [[ $? == 0 ]]
|
|
127
|
+
then
|
|
128
|
+
count=`echo $backups|wc -w`
|
|
129
|
+
startpos=`expr $num + 1`
|
|
130
|
+
if [[ $count -gt $num ]]
|
|
131
|
+
then
|
|
132
|
+
for i in `echo $backups|cut -f${startpos}- -d" "`
|
|
133
|
+
do
|
|
134
|
+
remove $i
|
|
135
|
+
done
|
|
136
|
+
fi
|
|
137
|
+
fi
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
logExit ended 0
|
|
141
|
+
|
|
142
|
+
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
|
5
|
+
# this work for additional information regarding copyright ownership.
|
|
6
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
+
# (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
# Shell script to force a commit of all changes since last commit
|
|
19
|
+
# for a Solr server
|
|
20
|
+
|
|
21
|
+
orig_dir=$(pwd)
|
|
22
|
+
cd ${0%/*}/..
|
|
23
|
+
solr_root=$(pwd)
|
|
24
|
+
cd ${orig_dir}
|
|
25
|
+
curl_url=""
|
|
26
|
+
|
|
27
|
+
unset solr_hostname solr_port webapp_name user verbose debug solr_url
|
|
28
|
+
. ${solr_root}/bin/scripts-util
|
|
29
|
+
|
|
30
|
+
# set up variables
|
|
31
|
+
prog=${0##*/}
|
|
32
|
+
log=${solr_root}/logs/${prog}.log
|
|
33
|
+
|
|
34
|
+
# define usage string
|
|
35
|
+
USAGE="\
|
|
36
|
+
usage: $prog [-h hostname] [-p port] [-w webapp_name] [-u username] [-U url] [-v] [-V]
|
|
37
|
+
-h specify Solr hostname (defaults to localhost)
|
|
38
|
+
-p specify Solr port number
|
|
39
|
+
-w specify name of Solr webapp (defaults to solr)
|
|
40
|
+
-u specify user to sudo to before running script
|
|
41
|
+
-U specify full update url (overrides -h,-p,-w parameters)
|
|
42
|
+
-v increase verbosity
|
|
43
|
+
-V output debugging info
|
|
44
|
+
"
|
|
45
|
+
|
|
46
|
+
# parse args
|
|
47
|
+
while getopts h:p:w:u:U:vV OPTION
|
|
48
|
+
do
|
|
49
|
+
case $OPTION in
|
|
50
|
+
h)
|
|
51
|
+
solr_hostname="$OPTARG"
|
|
52
|
+
;;
|
|
53
|
+
p)
|
|
54
|
+
solr_port="$OPTARG"
|
|
55
|
+
;;
|
|
56
|
+
w)
|
|
57
|
+
webapp_name="$OPTARG"
|
|
58
|
+
;;
|
|
59
|
+
u)
|
|
60
|
+
user="$OPTARG"
|
|
61
|
+
;;
|
|
62
|
+
U)
|
|
63
|
+
solr_url="$OPTARG"
|
|
64
|
+
;;
|
|
65
|
+
v)
|
|
66
|
+
verbose="v"
|
|
67
|
+
;;
|
|
68
|
+
V)
|
|
69
|
+
debug="V"
|
|
70
|
+
;;
|
|
71
|
+
*)
|
|
72
|
+
echo "$USAGE"
|
|
73
|
+
exit 1
|
|
74
|
+
esac
|
|
75
|
+
done
|
|
76
|
+
|
|
77
|
+
[[ -n $debug ]] && set -x
|
|
78
|
+
|
|
79
|
+
if [[ -n ${solr_url} ]]
|
|
80
|
+
then
|
|
81
|
+
curl_url=${solr_url}
|
|
82
|
+
else
|
|
83
|
+
if [[ -z ${solr_port} ]]
|
|
84
|
+
then
|
|
85
|
+
echo "Solr port number missing in $confFile or command line."
|
|
86
|
+
echo "$USAGE"
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# use default hostname if not specified
|
|
91
|
+
if [[ -z ${solr_hostname} ]]
|
|
92
|
+
then
|
|
93
|
+
solr_hostname=localhost
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
# use default webapp name if not specified
|
|
97
|
+
if [[ -z ${webapp_name} ]]
|
|
98
|
+
then
|
|
99
|
+
webapp_name=solr
|
|
100
|
+
fi
|
|
101
|
+
curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
fixUser "$@"
|
|
105
|
+
|
|
106
|
+
start=`date +"%s"`
|
|
107
|
+
|
|
108
|
+
logMessage started by $oldwhoami
|
|
109
|
+
logMessage command: $0 $@
|
|
110
|
+
|
|
111
|
+
rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<commit/>"`
|
|
112
|
+
if [[ $? != 0 ]]
|
|
113
|
+
then
|
|
114
|
+
logMessage failed to connect to Solr server at ${curl_url}
|
|
115
|
+
logMessage commit failed
|
|
116
|
+
logExit failed 1
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
# check status of commit request
|
|
120
|
+
echo $rs | grep '<result.*status="0"' > /dev/null 2>&1
|
|
121
|
+
if [[ $? != 0 ]]
|
|
122
|
+
then
|
|
123
|
+
logMessage commit request to Solr at ${curl_url} failed:
|
|
124
|
+
logMessage $rs
|
|
125
|
+
logExit failed 2
|
|
126
|
+
fi
|
|
127
|
+
|
|
128
|
+
logExit ended 0
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
|
5
|
+
# this work for additional information regarding copyright ownership.
|
|
6
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
+
# (the "License"); you may not use this file except in compliance with
|
|
8
|
+
# the License. You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
# Shell script to force a optimized commit of all changes since last commit
|
|
19
|
+
# for a Solr server
|
|
20
|
+
|
|
21
|
+
orig_dir=$(pwd)
|
|
22
|
+
cd ${0%/*}/..
|
|
23
|
+
solr_root=$(pwd)
|
|
24
|
+
cd ${orig_dir}
|
|
25
|
+
curl_url=""
|
|
26
|
+
|
|
27
|
+
unset solr_hostname solr_port webapp_name user verbose debug solr_url
|
|
28
|
+
. ${solr_root}/bin/scripts-util
|
|
29
|
+
|
|
30
|
+
# set up variables
|
|
31
|
+
prog=${0##*/}
|
|
32
|
+
log=${solr_root}/logs/${prog}.log
|
|
33
|
+
|
|
34
|
+
# define usage string
|
|
35
|
+
USAGE="\
|
|
36
|
+
usage: $prog [-h hostname] [-p port] [-u username] [-U url] [-v] [-V]
|
|
37
|
+
-h specify Solr hostname (defaults to localhost)
|
|
38
|
+
-p specify Solr port number
|
|
39
|
+
-w specify name of Solr webapp (defaults to solr)
|
|
40
|
+
-u specify user to sudo to before running script
|
|
41
|
+
-U specify full update url (overrides -h,-p,-w parameters)
|
|
42
|
+
-v increase verbosity
|
|
43
|
+
-V output debugging info
|
|
44
|
+
"
|
|
45
|
+
|
|
46
|
+
# parse args
|
|
47
|
+
originalargs="$@"
|
|
48
|
+
while getopts h:p:w:u:U:vV OPTION
|
|
49
|
+
do
|
|
50
|
+
case $OPTION in
|
|
51
|
+
h)
|
|
52
|
+
solr_hostname="$OPTARG"
|
|
53
|
+
;;
|
|
54
|
+
p)
|
|
55
|
+
solr_port="$OPTARG"
|
|
56
|
+
;;
|
|
57
|
+
w)
|
|
58
|
+
webapp_name="$OPTARG"
|
|
59
|
+
;;
|
|
60
|
+
u)
|
|
61
|
+
user="$OPTARG"
|
|
62
|
+
;;
|
|
63
|
+
U)
|
|
64
|
+
solr_url="$OPTARG"
|
|
65
|
+
;;
|
|
66
|
+
v)
|
|
67
|
+
verbose="v"
|
|
68
|
+
;;
|
|
69
|
+
V)
|
|
70
|
+
debug="V"
|
|
71
|
+
;;
|
|
72
|
+
*)
|
|
73
|
+
echo "$USAGE"
|
|
74
|
+
exit 1
|
|
75
|
+
esac
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
[[ -n $debug ]] && set -x
|
|
79
|
+
|
|
80
|
+
if [[ -n ${solr_url} ]]
|
|
81
|
+
then
|
|
82
|
+
curl_url=${solr_url}
|
|
83
|
+
else
|
|
84
|
+
if [[ -z ${solr_port} ]]
|
|
85
|
+
then
|
|
86
|
+
echo "Solr port number missing in $confFile or command line."
|
|
87
|
+
echo "$USAGE"
|
|
88
|
+
exit 1
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
# use default hostname if not specified
|
|
92
|
+
if [[ -z ${solr_hostname} ]]
|
|
93
|
+
then
|
|
94
|
+
solr_hostname=localhost
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# use default webapp name if not specified
|
|
98
|
+
if [[ -z ${webapp_name} ]]
|
|
99
|
+
then
|
|
100
|
+
webapp_name=solr
|
|
101
|
+
fi
|
|
102
|
+
curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
fixUser "$@"
|
|
106
|
+
|
|
107
|
+
start=`date +"%s"`
|
|
108
|
+
|
|
109
|
+
logMessage started by $oldwhoami
|
|
110
|
+
logMessage command: $0 $@
|
|
111
|
+
|
|
112
|
+
rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<optimize/>"`
|
|
113
|
+
if [[ $? != 0 ]]
|
|
114
|
+
then
|
|
115
|
+
logMessage failed to connect to Solr server at ${curl_url}
|
|
116
|
+
logMessage optimize failed
|
|
117
|
+
logExit failed 1
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# check status of optimize request
|
|
121
|
+
rc=`echo $rs|cut -f2 -d'"'`
|
|
122
|
+
if [[ $? != 0 ]]
|
|
123
|
+
then
|
|
124
|
+
logMessage optimize request to Solr at ${curl_url} failed:
|
|
125
|
+
logMessage $rs
|
|
126
|
+
logExit failed 2
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
logExit ended 0
|