droonga-engine 1.0.9 → 1.1.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/benchmark/timer-watcher/benchmark.rb +44 -0
- data/bin/droonga-engine-absorb-data +246 -187
- data/bin/droonga-engine-catalog-generate +12 -12
- data/bin/droonga-engine-catalog-modify +4 -4
- data/bin/droonga-engine-join +352 -171
- data/bin/droonga-engine-set-role +54 -0
- data/bin/droonga-engine-unjoin +107 -112
- data/droonga-engine.gemspec +3 -3
- data/install.sh +55 -36
- data/install/centos/functions.sh +2 -2
- data/install/debian/functions.sh +2 -2
- data/lib/droonga/address.rb +26 -24
- data/lib/droonga/buffered_tcp_socket.rb +65 -10
- data/lib/droonga/catalog/base.rb +9 -6
- data/lib/droonga/catalog/dataset.rb +17 -41
- data/lib/droonga/catalog/fetcher.rb +64 -0
- data/lib/droonga/catalog/generator.rb +245 -0
- data/lib/droonga/catalog/loader.rb +66 -0
- data/lib/droonga/{catalog_modifier.rb → catalog/modifier.rb} +11 -18
- data/lib/droonga/catalog/replicas_volume.rb +123 -0
- data/lib/droonga/catalog/schema.rb +37 -37
- data/lib/droonga/catalog/single_volume.rb +11 -3
- data/lib/droonga/catalog/slice.rb +10 -6
- data/lib/droonga/catalog/{collection_volume.rb → slices_volume.rb} +47 -11
- data/lib/droonga/catalog/version1.rb +47 -19
- data/lib/droonga/catalog/version2.rb +11 -10
- data/lib/droonga/catalog/version2_validator.rb +4 -4
- data/lib/droonga/catalog/volume.rb +17 -5
- data/lib/droonga/changable.rb +25 -0
- data/lib/droonga/cluster.rb +237 -0
- data/lib/droonga/collector_runner.rb +4 -0
- data/lib/droonga/collectors.rb +2 -1
- data/lib/droonga/collectors/recursive_sum.rb +26 -0
- data/lib/droonga/command/droonga_engine.rb +404 -127
- data/lib/droonga/command/droonga_engine_service.rb +47 -11
- data/lib/droonga/command/droonga_engine_worker.rb +21 -1
- data/lib/droonga/command/remote_command_base.rb +78 -0
- data/lib/droonga/command/serf_event_handler.rb +29 -20
- data/lib/droonga/data_absorber_client.rb +222 -0
- data/lib/droonga/database_scanner.rb +106 -0
- data/lib/droonga/{live_nodes_list_loader.rb → deferrable.rb} +11 -24
- data/lib/droonga/differ.rb +58 -0
- data/lib/droonga/dispatcher.rb +155 -32
- data/lib/droonga/distributed_command_planner.rb +9 -11
- data/lib/droonga/engine.rb +83 -78
- data/lib/droonga/engine/version.rb +1 -1
- data/lib/droonga/engine_node.rb +301 -0
- data/lib/droonga/engine_state.rb +62 -40
- data/lib/droonga/farm.rb +44 -5
- data/lib/droonga/file_observer.rb +16 -12
- data/lib/droonga/fluent_message_receiver.rb +98 -29
- data/lib/droonga/fluent_message_sender.rb +30 -23
- data/lib/droonga/forward_buffer.rb +160 -0
- data/lib/droonga/forwarder.rb +73 -40
- data/lib/droonga/handler.rb +7 -6
- data/lib/droonga/handler_messenger.rb +15 -6
- data/lib/droonga/handler_runner.rb +6 -1
- data/lib/droonga/internal_fluent_message_receiver.rb +28 -8
- data/lib/droonga/job_pusher.rb +10 -7
- data/lib/droonga/job_receiver.rb +6 -4
- data/lib/droonga/logger.rb +7 -1
- data/lib/droonga/node_name.rb +90 -0
- data/lib/droonga/node_role.rb +72 -0
- data/lib/droonga/path.rb +34 -9
- data/lib/droonga/planner.rb +73 -7
- data/lib/droonga/plugin/async_command.rb +154 -0
- data/lib/droonga/plugins/catalog.rb +1 -0
- data/lib/droonga/plugins/crud.rb +22 -6
- data/lib/droonga/plugins/dump.rb +66 -135
- data/lib/droonga/plugins/groonga/delete.rb +13 -0
- data/lib/droonga/plugins/search/distributed_search_planner.rb +4 -4
- data/lib/droonga/plugins/system.rb +5 -26
- data/lib/droonga/plugins/system/absorb_data.rb +405 -0
- data/lib/droonga/plugins/system/statistics.rb +71 -0
- data/lib/droonga/plugins/system/status.rb +53 -0
- data/lib/droonga/process_control_protocol.rb +3 -1
- data/lib/droonga/process_supervisor.rb +32 -15
- data/lib/droonga/reducer.rb +69 -0
- data/lib/droonga/safe_file_writer.rb +1 -1
- data/lib/droonga/serf.rb +207 -276
- data/lib/droonga/serf/agent.rb +228 -0
- data/lib/droonga/serf/command.rb +94 -0
- data/lib/droonga/serf/downloader.rb +120 -0
- data/lib/droonga/serf/remote_command.rb +348 -0
- data/lib/droonga/serf/tag.rb +56 -0
- data/lib/droonga/service_installation.rb +2 -2
- data/lib/droonga/session.rb +49 -1
- data/lib/droonga/single_step.rb +6 -11
- data/lib/droonga/single_step_definition.rb +32 -1
- data/lib/droonga/slice.rb +14 -9
- data/lib/droonga/supervisor.rb +27 -20
- data/lib/droonga/test/stub_handler_messenger.rb +2 -1
- data/lib/droonga/timestamp.rb +69 -0
- data/lib/droonga/worker_process_agent.rb +33 -15
- data/sample/cluster-state.json +8 -0
- data/sample/cluster/Rakefile +30 -6
- data/test/command/fixture/integer-key-table.jsons +11 -0
- data/test/command/fixture/string-key-table.jsons +11 -0
- data/test/command/run-test.rb +4 -0
- data/test/command/suite/add/error/invalid-integer.expected +3 -3
- data/test/command/suite/add/error/invalid-time.expected +3 -3
- data/test/command/suite/add/{minimum.expected → key-integer.expected} +0 -0
- data/test/command/suite/add/{minimum.test → key-integer.test} +0 -0
- data/test/command/suite/add/key-string.expected +6 -0
- data/test/command/suite/add/key-string.test +9 -0
- data/test/command/suite/add/mismatched-key-type/acceptable/integer-for-string.expected +6 -0
- data/test/command/suite/add/mismatched-key-type/acceptable/integer-for-string.test +9 -0
- data/test/command/suite/add/mismatched-key-type/acceptable/string-for-integer.expected +6 -0
- data/test/command/suite/add/mismatched-key-type/acceptable/string-for-integer.test +9 -0
- data/test/command/suite/add/without-values.expected +6 -0
- data/test/command/suite/add/without-values.test +11 -0
- data/test/command/suite/dump/column/index.expected +33 -1
- data/test/command/suite/dump/column/index.test +1 -0
- data/test/command/suite/dump/column/scalar.expected +29 -1
- data/test/command/suite/dump/column/scalar.test +1 -0
- data/test/command/suite/dump/column/vector.expected +29 -1
- data/test/command/suite/dump/column/vector.test +1 -0
- data/test/command/suite/dump/record/scalar.catalog.json +12 -0
- data/test/command/suite/dump/record/scalar.expected +84 -0
- data/test/command/suite/dump/record/scalar.test +16 -0
- data/test/command/suite/dump/record/vector/reference.expected +83 -1
- data/test/command/suite/dump/record/vector/reference.test +1 -0
- data/test/command/suite/dump/table/array.expected +27 -1
- data/test/command/suite/dump/table/array.test +1 -0
- data/test/command/suite/dump/table/double_array_trie.expected +27 -1
- data/test/command/suite/dump/table/double_array_trie.test +1 -0
- data/test/command/suite/dump/table/hash.expected +27 -1
- data/test/command/suite/dump/table/hash.test +1 -0
- data/test/command/suite/dump/table/patricia_trie.expected +27 -1
- data/test/command/suite/dump/table/patricia_trie.test +1 -0
- data/test/command/suite/groonga/delete/{success.expected → key-integer.expected} +0 -0
- data/test/command/suite/groonga/delete/key-integer.test +17 -0
- data/test/command/suite/groonga/delete/key-string.expected +19 -0
- data/test/command/suite/groonga/delete/{success.test → key-string.test} +4 -6
- data/test/command/suite/groonga/delete/mismatched-type-key/acceptable/integer-for-string.expected +19 -0
- data/test/command/suite/groonga/delete/mismatched-type-key/acceptable/integer-for-string.test +17 -0
- data/test/command/suite/groonga/delete/mismatched-type-key/acceptable/string-for-integer.expected +19 -0
- data/test/command/suite/groonga/delete/mismatched-type-key/acceptable/string-for-integer.test +17 -0
- data/test/command/suite/message/error/missing-dataset.test +1 -0
- data/test/command/suite/system/absorb-data/records.catalog.json +58 -0
- data/test/command/suite/system/absorb-data/records.expected +32 -0
- data/test/command/suite/system/absorb-data/records.test +24 -0
- data/test/command/suite/system/statistics/object/count/empty.expected +11 -0
- data/test/command/suite/system/statistics/object/count/empty.test +12 -0
- data/test/command/suite/system/statistics/object/count/per-volume/empty.catalog.json +36 -0
- data/test/command/suite/system/statistics/object/count/per-volume/empty.expected +19 -0
- data/test/command/suite/system/statistics/object/count/per-volume/empty.test +12 -0
- data/test/command/suite/system/statistics/object/count/per-volume/record.catalog.json +40 -0
- data/test/command/suite/system/statistics/object/count/per-volume/record.expected +19 -0
- data/test/command/suite/system/statistics/object/count/per-volume/record.test +23 -0
- data/test/command/suite/system/statistics/object/count/per-volume/schema.catalog.json +40 -0
- data/test/command/suite/system/statistics/object/count/per-volume/schema.expected +19 -0
- data/test/command/suite/system/statistics/object/count/per-volume/schema.test +13 -0
- data/test/command/suite/system/statistics/object/count/record.catalog.json +12 -0
- data/test/command/suite/system/statistics/object/count/record.expected +11 -0
- data/test/command/suite/system/statistics/object/count/record.test +23 -0
- data/test/command/suite/system/statistics/object/count/schema.catalog.json +12 -0
- data/test/command/suite/system/statistics/object/count/schema.expected +11 -0
- data/test/command/suite/system/statistics/object/count/schema.test +13 -0
- data/test/command/suite/system/status.expected +3 -2
- data/test/unit/catalog/test_dataset.rb +4 -1
- data/test/unit/{test_catalog_generator.rb → catalog/test_generator.rb} +2 -2
- data/test/unit/catalog/test_replicas_volume.rb +79 -0
- data/test/unit/catalog/test_single_volume.rb +2 -2
- data/test/unit/catalog/test_slice.rb +33 -1
- data/test/unit/catalog/{test_collection_volume.rb → test_slices_volume.rb} +72 -11
- data/test/unit/catalog/test_version2.rb +3 -0
- data/test/unit/helper/distributed_search_planner_helper.rb +2 -2
- data/test/unit/plugins/catalog/test_fetch.rb +4 -4
- data/test/unit/plugins/crud/test_add.rb +44 -4
- data/test/unit/plugins/groonga/test_column_create.rb +4 -4
- data/test/unit/plugins/groonga/test_column_list.rb +4 -4
- data/test/unit/plugins/groonga/test_column_remove.rb +4 -4
- data/test/unit/plugins/groonga/test_column_rename.rb +4 -4
- data/test/unit/plugins/groonga/test_delete.rb +73 -10
- data/test/unit/plugins/groonga/test_table_create.rb +4 -4
- data/test/unit/plugins/groonga/test_table_list.rb +4 -4
- data/test/unit/plugins/groonga/test_table_remove.rb +4 -4
- data/test/unit/plugins/search/test_handler.rb +4 -4
- data/test/unit/plugins/search/test_planner.rb +4 -2
- data/test/unit/plugins/system/test_status.rb +31 -15
- data/test/unit/plugins/test_watch.rb +16 -16
- data/test/unit/test_address.rb +4 -4
- metadata +134 -35
- data/lib/droonga/catalog/volume_collection.rb +0 -79
- data/lib/droonga/catalog_fetcher.rb +0 -53
- data/lib/droonga/catalog_generator.rb +0 -243
- data/lib/droonga/catalog_loader.rb +0 -56
- data/lib/droonga/command/remote.rb +0 -404
- data/lib/droonga/data_absorber.rb +0 -264
- data/lib/droonga/node_status.rb +0 -71
- data/lib/droonga/serf_downloader.rb +0 -115
- data/test/unit/catalog/test_volume_collection.rb +0 -78
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2014-2015 Droonga Project
|
|
4
|
+
#
|
|
5
|
+
# This library is free software; you can redistribute it and/or
|
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
|
8
|
+
#
|
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
12
|
+
# Lesser General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
15
|
+
# License along with this library; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
require "droonga/command/remote_command_base"
|
|
19
|
+
|
|
20
|
+
module Droonga
|
|
21
|
+
module Command
|
|
22
|
+
class SetRole < RemoteCommandBase
|
|
23
|
+
def run
|
|
24
|
+
parse_options do |option|
|
|
25
|
+
option.on(:role=,
|
|
26
|
+
"New role for the target node.",
|
|
27
|
+
:required => true)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
if serf.role == @options[:role]
|
|
31
|
+
puts "Role of #{node.to_s} is #{@options[:role]}. Nothing to do."
|
|
32
|
+
return true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
puts "Setting role of #{node.to_s} to #{@options[:role]}..."
|
|
36
|
+
succeeded = set_node_role
|
|
37
|
+
|
|
38
|
+
puts("Done.") if succeeded
|
|
39
|
+
succeeded
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
def set_node_role
|
|
44
|
+
serf.ensure_restarted do
|
|
45
|
+
serf.send_query("change_role",
|
|
46
|
+
"node" => node.to_s,
|
|
47
|
+
"role" => @options[:role])
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
exit(Droonga::Command::SetRole.new.run)
|
data/bin/droonga-engine-unjoin
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2014 Droonga Project
|
|
3
|
+
# Copyright (C) 2014-2015 Droonga Project
|
|
4
4
|
#
|
|
5
5
|
# This library is free software; you can redistribute it and/or
|
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -15,121 +15,116 @@
|
|
|
15
15
|
# License along with this library; if not, write to the Free Software
|
|
16
16
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
17
|
|
|
18
|
-
require "
|
|
19
|
-
require "json"
|
|
20
|
-
require "pathname"
|
|
18
|
+
require "socket"
|
|
21
19
|
|
|
22
|
-
require "droonga/
|
|
23
|
-
require "droonga/
|
|
24
|
-
require "droonga/
|
|
25
|
-
require "droonga/
|
|
20
|
+
require "droonga/command/remote_command_base"
|
|
21
|
+
require "droonga/node_name"
|
|
22
|
+
require "droonga/catalog/dataset"
|
|
23
|
+
require "droonga/catalog/loader"
|
|
24
|
+
require "droonga/catalog/fetcher"
|
|
25
|
+
require "droonga/catalog/generator"
|
|
26
26
|
require "droonga/serf"
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
28
|
+
module Droonga
|
|
29
|
+
module Command
|
|
30
|
+
class Unjoin < RemoteCommandBase
|
|
31
|
+
def run
|
|
32
|
+
parse_options do |option|
|
|
33
|
+
option.on("receiver-host=",
|
|
34
|
+
"Host name of this host.",
|
|
35
|
+
:default => Socket.gethostname)
|
|
36
|
+
option.on(:dataset=,
|
|
37
|
+
"Dataset name of for the node to be unjoined.",
|
|
38
|
+
:default => Catalog::Dataset::DEFAULT_NAME)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
puts "Start to unjoin a node #{node.to_s}"
|
|
42
|
+
puts " by #{@options["receiver-host"]} (this host)"
|
|
43
|
+
puts ""
|
|
44
|
+
|
|
45
|
+
succeeded = do_unjoin
|
|
46
|
+
|
|
47
|
+
puts("Done.") if succeeded
|
|
48
|
+
succeeded
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def replica_remove_host
|
|
52
|
+
host
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def replica_remove_node
|
|
56
|
+
node
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def dataset_name
|
|
60
|
+
@options[:dataset]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def cluster_id
|
|
64
|
+
catalog.cluster_id
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def catalog
|
|
68
|
+
@catalog ||= parse_catalog
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def parse_catalog
|
|
72
|
+
loader = Catalog::Loader.new
|
|
73
|
+
loader.parse(raw_catalog)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def raw_catalog
|
|
77
|
+
@raw_catalog ||= fetch_catalog
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def fetch_catalog
|
|
81
|
+
fetcher = Catalog::Fetcher.new(:host => replica_remove_host,
|
|
82
|
+
:port => port,
|
|
83
|
+
:tag => tag,
|
|
84
|
+
:receiver_host => @options["receiver-host"])
|
|
85
|
+
fetcher.fetch(:dataset => dataset_name)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def remaining_node
|
|
89
|
+
@remaining_node ||= prepare_remaining_node
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def remaining_node_serf
|
|
93
|
+
@remaining_node_serf ||= Serf.new(remaining_node.to_s,
|
|
94
|
+
:verbose => @options[:verbose])
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def prepare_remaining_node
|
|
98
|
+
generator = Catalog::Generator.new
|
|
99
|
+
generator.load(raw_catalog)
|
|
100
|
+
|
|
101
|
+
dataset = generator.dataset_for_host(replica_remove_host)
|
|
102
|
+
unless dataset
|
|
103
|
+
raise "Specified host #{replica_remove_host} is not a member of "+
|
|
104
|
+
"the cluster. You must specify correct host via --replica-remove-host " +
|
|
105
|
+
"option."
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
other_hosts = dataset.replicas.hosts
|
|
109
|
+
|
|
110
|
+
remaining_host = other_hosts.first || replica_remove_host
|
|
111
|
+
NodeName.new(:host => remaining_host,
|
|
112
|
+
:port => port,
|
|
113
|
+
:tag => tag)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def do_unjoin
|
|
117
|
+
puts "Unjoining replica from the cluster..."
|
|
118
|
+
|
|
119
|
+
remaining_node_serf.ensure_restarted do
|
|
120
|
+
remaining_node_serf.send_query("unjoin",
|
|
121
|
+
"cluster_id" => cluster_id,
|
|
122
|
+
"dataset" => dataset_name,
|
|
123
|
+
"hosts" => [replica_remove_host])
|
|
124
|
+
end
|
|
125
|
+
end
|
|
110
126
|
end
|
|
111
|
-
|
|
112
|
-
other_hosts = dataset.replicas.hosts
|
|
113
|
-
|
|
114
|
-
remaining_host = other_hosts.first || replica_remove_host
|
|
115
|
-
"#{remaining_host}:#{port}/#{tag}"
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def run_remote_command(target, command, options)
|
|
119
|
-
serf = Droonga::Serf.new(nil, target)
|
|
120
|
-
result = serf.send_query(command, options)
|
|
121
|
-
puts(result[:result])
|
|
122
|
-
puts(result[:error]) unless result[:error].empty?
|
|
123
|
-
result[:response]
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def do_unjoin
|
|
127
|
-
puts "Unjoining replica from the cluster..."
|
|
128
|
-
|
|
129
|
-
run_remote_command(remaining_node, "unjoin",
|
|
130
|
-
"dataset" => dataset_name,
|
|
131
|
-
"hosts" => [replica_remove_host])
|
|
132
127
|
end
|
|
133
128
|
end
|
|
134
129
|
|
|
135
|
-
|
|
130
|
+
exit(Droonga::Command::Unjoin.new.run)
|
data/droonga-engine.gemspec
CHANGED
|
@@ -36,8 +36,8 @@ Gem::Specification.new do |gem|
|
|
|
36
36
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
37
37
|
gem.require_paths = ["lib"]
|
|
38
38
|
gem.add_dependency "archive-zip"
|
|
39
|
-
gem.add_dependency "cool.io"
|
|
40
|
-
gem.add_dependency "drndump"
|
|
39
|
+
gem.add_dependency "cool.io", ">= 1.3.0"
|
|
40
|
+
gem.add_dependency "drndump", ">= 1.0.1"
|
|
41
41
|
gem.add_dependency "droonga-client", ">= 0.1.9"
|
|
42
42
|
gem.add_dependency "droonga-message-pack-packer", ">= 1.0.2"
|
|
43
43
|
gem.add_dependency "groonga-command-parser"
|
|
@@ -46,7 +46,7 @@ Gem::Specification.new do |gem|
|
|
|
46
46
|
gem.add_dependency "json"
|
|
47
47
|
gem.add_dependency "rroonga", ">= 4.0.4"
|
|
48
48
|
gem.add_dependency "sigdump"
|
|
49
|
-
gem.add_dependency "slop"
|
|
49
|
+
gem.add_dependency "slop", "<= 3.6.0"
|
|
50
50
|
gem.add_dependency "sys-proctable"
|
|
51
51
|
gem.add_development_dependency "kramdown"
|
|
52
52
|
gem.add_development_dependency "bundler"
|
data/install.sh
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2014 Droonga Project
|
|
1
|
+
# Copyright (C) 2014-2015 Droonga Project
|
|
2
2
|
#
|
|
3
3
|
# This library is free software; you can redistribute it and/or
|
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
NAME=droonga-engine
|
|
37
37
|
DOWNLOAD_URL_BASE=https://raw.githubusercontent.com/droonga/$NAME
|
|
38
38
|
REPOSITORY_URL=https://github.com/droonga/$NAME.git
|
|
39
|
+
DROONGA_CLIENT_RUBY_REPOSITORY_URL=https://github.com/droonga/droonga-client-ruby.git
|
|
40
|
+
DRNDUMP_REPOSITORY_URL=https://github.com/droonga/drndump.git
|
|
41
|
+
RROONGA_REPOSITORY_URL=https://github.com/ranguba/rroonga.git
|
|
42
|
+
GROONGA_COMMAND_REPOSITORY_URL=https://github.com/groonga/groonga-command.git
|
|
43
|
+
GROONGA_COMMAND_PARSER_REPOSITORY_URL=https://github.com/groonga/groonga-command-parser.git
|
|
39
44
|
USER=$NAME
|
|
40
45
|
GROUP=droonga
|
|
41
46
|
DROONGA_BASE_DIR=/home/$USER/droonga
|
|
@@ -44,6 +49,7 @@ TEMPDIR=/tmp/install-$NAME
|
|
|
44
49
|
: ${VERSION:=release}
|
|
45
50
|
: ${HOST:=Auto Detect}
|
|
46
51
|
: ${PORT:=10031}
|
|
52
|
+
: ${INSTALL_FROM_REPOSITORY:=$NAME}
|
|
47
53
|
|
|
48
54
|
case $(uname) in
|
|
49
55
|
Darwin|*BSD|CYGWIN*) sed="sed -E" ;;
|
|
@@ -181,7 +187,7 @@ determine_hostname() {
|
|
|
181
187
|
}
|
|
182
188
|
|
|
183
189
|
download_url() {
|
|
184
|
-
if [ "$VERSION"
|
|
190
|
+
if [ "$VERSION" != "release" ]; then
|
|
185
191
|
echo "$DOWNLOAD_URL_BASE/master/$1"
|
|
186
192
|
else
|
|
187
193
|
echo "$DOWNLOAD_URL_BASE/v$(installed_version)/$1"
|
|
@@ -192,48 +198,61 @@ installed_version() {
|
|
|
192
198
|
$NAME --version | cut -d " " -f 2
|
|
193
199
|
}
|
|
194
200
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
# doesn't work as we expect for Droonga...
|
|
199
|
-
if exist_command grndump; then
|
|
200
|
-
local current_version=$(grndump -v | cut -d " " -f 2)
|
|
201
|
-
local version_matcher=$(cat $NAME.gemspec | \
|
|
202
|
-
grep rroonga | \
|
|
203
|
-
cut -d "," -f 2 | \
|
|
204
|
-
cut -d '"' -f 2)
|
|
205
|
-
local compared_version=$(echo "$version_matcher" | \
|
|
206
|
-
cut -d " " -f 2)
|
|
207
|
-
local operator=$(echo "$version_matcher" | cut -d " " -f 1)
|
|
208
|
-
local compare_result=$(ruby -e "puts('$current_version' $operator '$compared_version')")
|
|
209
|
-
if [ "$compare_result" = "true" ]; then return 0; fi
|
|
210
|
-
fi
|
|
211
|
-
gem install rroonga --no-ri --no-rdoc
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
install_master() {
|
|
215
|
-
gem install bundler --no-ri --no-rdoc
|
|
216
|
-
|
|
201
|
+
install_gem_from_repository() {
|
|
202
|
+
GEM_NAME=$1
|
|
203
|
+
GEM_REPOSITORY_URL=$2
|
|
217
204
|
cd $TEMPDIR
|
|
218
205
|
|
|
219
|
-
if [ -d $
|
|
206
|
+
if [ -d $GEM_NAME ]
|
|
220
207
|
then
|
|
221
|
-
cd $
|
|
222
|
-
install_rroonga
|
|
208
|
+
cd $GEM_NAME
|
|
223
209
|
git reset --hard
|
|
224
210
|
git pull --rebase
|
|
211
|
+
git checkout master
|
|
225
212
|
bundle update
|
|
226
213
|
else
|
|
227
|
-
git clone $
|
|
228
|
-
cd $
|
|
229
|
-
|
|
230
|
-
bundle install
|
|
214
|
+
git clone $GEM_REPOSITORY_URL
|
|
215
|
+
cd $GEM_NAME
|
|
216
|
+
git checkout master
|
|
217
|
+
bundle install --path vendor/
|
|
231
218
|
fi
|
|
232
219
|
rm -rf pkg
|
|
233
220
|
bundle exec rake build
|
|
234
221
|
gem install "pkg/*.gem" --no-ri --no-rdoc
|
|
235
222
|
}
|
|
236
223
|
|
|
224
|
+
install_from_repository() {
|
|
225
|
+
gem install bundler --no-ri --no-rdoc
|
|
226
|
+
|
|
227
|
+
if echo "$INSTALL_FROM_REPOSITORY" | grep "rroonga"
|
|
228
|
+
then
|
|
229
|
+
install_gem_from_repository rroonga $RROONGA_REPOSITORY_URL
|
|
230
|
+
install_gem_from_repository groonga-command $GROONGA_COMMAND_REPOSITORY_URL
|
|
231
|
+
install_gem_from_repository groonga-command-parser $GROONGA_COMMAND_PARSER_REPOSITORY_URL
|
|
232
|
+
else
|
|
233
|
+
rm -rf $TEMPDIR/rroonga
|
|
234
|
+
rm -rf $TEMPDIR/groonga-command
|
|
235
|
+
rm -rf $TEMPDIR/groonga-command-parser
|
|
236
|
+
fi
|
|
237
|
+
|
|
238
|
+
if echo "$INSTALL_FROM_REPOSITORY" | grep "client"
|
|
239
|
+
then
|
|
240
|
+
install_gem_from_repository droonga-client-ruby $DROONGA_CLIENT_RUBY_REPOSITORY_URL
|
|
241
|
+
else
|
|
242
|
+
rm -rf $TEMPDIR/droonga-client-ruby
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
if echo "$INSTALL_FROM_REPOSITORY" | grep "drndump"
|
|
247
|
+
then
|
|
248
|
+
install_gem_from_repository drndump $DRNDUMP_REPOSITORY_URL
|
|
249
|
+
else
|
|
250
|
+
rm -rf $TEMPDIR/drndump
|
|
251
|
+
fi
|
|
252
|
+
|
|
253
|
+
install_gem_from_repository $NAME $REPOSITORY_URL
|
|
254
|
+
}
|
|
255
|
+
|
|
237
256
|
|
|
238
257
|
|
|
239
258
|
# ====================== for Debian/Ubuntu ==========================
|
|
@@ -262,7 +281,7 @@ prepare_environment_in_debian() {
|
|
|
262
281
|
apt-get install -y libgroonga-dev
|
|
263
282
|
fi
|
|
264
283
|
|
|
265
|
-
if [ "$VERSION"
|
|
284
|
+
if [ "$VERSION" != "release" ]; then
|
|
266
285
|
apt-get install -y git
|
|
267
286
|
fi
|
|
268
287
|
}
|
|
@@ -297,7 +316,7 @@ prepare_environment_in_centos() {
|
|
|
297
316
|
yum -y --enablerepo=groonga install groonga-devel
|
|
298
317
|
fi
|
|
299
318
|
|
|
300
|
-
if [ "$VERSION"
|
|
319
|
+
if [ "$VERSION" != "release" ]; then
|
|
301
320
|
yum -y install git
|
|
302
321
|
fi
|
|
303
322
|
}
|
|
@@ -312,9 +331,9 @@ install() {
|
|
|
312
331
|
prepare_environment_in_$PLATFORM
|
|
313
332
|
|
|
314
333
|
echo ""
|
|
315
|
-
if [ "$VERSION"
|
|
334
|
+
if [ "$VERSION" != "release" ]; then
|
|
316
335
|
echo "Installing $NAME from the git repository..."
|
|
317
|
-
|
|
336
|
+
install_from_repository
|
|
318
337
|
else
|
|
319
338
|
echo "Installing $NAME from RubyGems..."
|
|
320
339
|
gem install droonga-engine --no-rdoc --no-ri
|
|
@@ -325,7 +344,7 @@ install() {
|
|
|
325
344
|
exit 1
|
|
326
345
|
fi
|
|
327
346
|
|
|
328
|
-
curl -o $TEMPDIR/functions.sh $(download_url "install/$PLATFORM/functions.sh")
|
|
347
|
+
curl -s -o $TEMPDIR/functions.sh $(download_url "install/$PLATFORM/functions.sh")
|
|
329
348
|
if ! source $TEMPDIR/functions.sh; then
|
|
330
349
|
echo "ERROR: Failed to download post-installation script!"
|
|
331
350
|
exit 1
|