rims 0.2.6 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/CHANGELOG.md +97 -0
- data/ChangeLog +49 -0
- data/Rakefile +8 -4
- data/lib/rims.rb +31 -29
- data/lib/rims/channel.rb +35 -10
- data/lib/rims/cmd.rb +109 -3
- data/lib/rims/error.rb +15 -0
- data/lib/rims/protocol.rb +28 -7
- data/lib/rims/protocol/decoder.rb +727 -457
- data/lib/rims/protocol/parser.rb +190 -82
- data/lib/rims/service.rb +172 -39
- data/lib/rims/test.rb +31 -20
- data/lib/rims/version.rb +1 -1
- data/load_test/Rakefile +3 -1
- data/rims.gemspec +14 -13
- data/test/cmd/test_command.rb +21 -1
- data/test/test_channel.rb +2 -1
- data/test/test_error.rb +33 -1
- data/test/test_lock.rb +4 -4
- data/test/test_passwd.rb +1 -1
- data/test/test_protocol_decoder.rb +555 -41
- data/test/test_protocol_fetch.rb +14 -10
- data/test/test_protocol_request.rb +305 -280
- data/test/test_protocol_search.rb +771 -893
- data/test/test_service.rb +165 -0
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe462a03485c3e28162aef29617c769fe660f1fcb5d431fe4fcd5034e967fb49
|
4
|
+
data.tar.gz: 10654bf0987325929b673e815b245d7821ab3b7fd76a90c73d2f534cef729eee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22f60433f0d748c266e377da045d544910d5e13028649d381fafdc40e5fbac0a5fc62e67c7bd777a6b46ef84058a4e690a302dc8a8d9d422996ec1926e82deef
|
7
|
+
data.tar.gz: 7a2b9c3094f79e94dc85176d3710a1a1e95c96c53ad8d5c8bf36f51ce123928497a518bb7d3ee69dea400bd793fe29536d114e867b95d647e055348062f14893
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
Change Log
|
2
|
+
==========
|
3
|
+
|
4
|
+
<!--
|
5
|
+
subsections:
|
6
|
+
### Added
|
7
|
+
### Changed
|
8
|
+
### Removed
|
9
|
+
### Fixed
|
10
|
+
-->
|
11
|
+
|
12
|
+
0.3.1
|
13
|
+
-----
|
14
|
+
Released on 2020-08-29.
|
15
|
+
|
16
|
+
### Added
|
17
|
+
- Input size limits.
|
18
|
+
[#34](https://github.com/y10k/rims/issues/34)
|
19
|
+
- Configurable bulk_response_size parameter.
|
20
|
+
[#36](https://github.com/y10k/rims/issues/36)
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
- Ready to Ruby 2.7.
|
24
|
+
[#35](https://github.com/y10k/rims/issues/35)
|
25
|
+
- Semantic versioning.
|
26
|
+
[#37](https://github.com/y10k/rims/issues/37)
|
27
|
+
|
28
|
+
0.2.9
|
29
|
+
-----
|
30
|
+
Released on 2019-12-12.
|
31
|
+
|
32
|
+
### Added
|
33
|
+
- Add `umask(2)` configuration parameter. [#29](https://github.com/y10k/rims/issues/29)
|
34
|
+
- Add debug logging for conflicted subscriber error. This problem is
|
35
|
+
not solved because it does not reappear. [#28](https://github.com/y10k/rims/issues/28)
|
36
|
+
|
37
|
+
### Changed
|
38
|
+
- Ready to Ruby 2.7. [#35](https://github.com/y10k/rims/issues/35)
|
39
|
+
|
40
|
+
### Fixed
|
41
|
+
- Fix a bug of detached thread finishing a protocol decoder engine.
|
42
|
+
- Make bulk message size of inter-process communication not exceeding `DRb`'s `load_limit`.
|
43
|
+
[#30](https://github.com/y10k/rims/issues/30)
|
44
|
+
[#33](https://github.com/y10k/rims/issues/33)
|
45
|
+
|
46
|
+
0.2.8
|
47
|
+
-----
|
48
|
+
Released on 2019-10-10.
|
49
|
+
|
50
|
+
0.2.7
|
51
|
+
-----
|
52
|
+
Released on 2019-07-27.
|
53
|
+
|
54
|
+
0.2.6
|
55
|
+
-----
|
56
|
+
Released on 2019-07-09.
|
57
|
+
|
58
|
+
0.2.5
|
59
|
+
-----
|
60
|
+
Released on 2019-06-10.
|
61
|
+
|
62
|
+
0.2.4
|
63
|
+
-----
|
64
|
+
Released on 2019-04-25.
|
65
|
+
|
66
|
+
0.2.3
|
67
|
+
-----
|
68
|
+
Released on 2019-04-10.
|
69
|
+
|
70
|
+
0.2.2
|
71
|
+
-----
|
72
|
+
Released on 2019-03-06.
|
73
|
+
|
74
|
+
0.2.1
|
75
|
+
-----
|
76
|
+
Released on 2019-02-18.
|
77
|
+
|
78
|
+
0.1.0
|
79
|
+
-----
|
80
|
+
Released on 2015-02-22.
|
81
|
+
|
82
|
+
0.0.4
|
83
|
+
-----
|
84
|
+
Released on 2014-06-08.
|
85
|
+
|
86
|
+
0.0.3
|
87
|
+
-----
|
88
|
+
Released on 2014-04-15.
|
89
|
+
|
90
|
+
0.0.2
|
91
|
+
-----
|
92
|
+
Released on 2014-03-05.
|
93
|
+
|
94
|
+
0.0.1
|
95
|
+
-----
|
96
|
+
Released on 2014-02-24.
|
97
|
+
|
data/ChangeLog
CHANGED
@@ -1,3 +1,52 @@
|
|
1
|
+
2019-12-12 TOKI Yoshinori <toki@freedom.ne.jp>
|
2
|
+
|
3
|
+
* ChangeLog: updates to this file have been stopped.
|
4
|
+
see CHANGELOG.md from now on.
|
5
|
+
|
6
|
+
2019-10-10 TOKI Yoshinori <toki@freedom.ne.jp>
|
7
|
+
|
8
|
+
* RIMS version 0.2.8 is released.
|
9
|
+
|
10
|
+
2019-08-12 TOKI Yoshinori <toki@freedom.ne.jp>
|
11
|
+
|
12
|
+
* lib/rims/cmd.rb, lib/rims/service.rb: DRb service load_limit
|
13
|
+
option.
|
14
|
+
|
15
|
+
2019-07-27 TOKI Yoshinori <toki@freedom.ne.jp>
|
16
|
+
|
17
|
+
* RIMS version 0.2.7 is released.
|
18
|
+
|
19
|
+
2019-07-25 TOKI Yoshinori <toki@freedom.ne.jp>
|
20
|
+
|
21
|
+
* lib/rims/cmd.rb, lib/rims/protocol/decoder.rb,
|
22
|
+
lib/rims/protocol/parser.rb, lib/rims/service.rb: message charset
|
23
|
+
encoding conversion options.
|
24
|
+
|
25
|
+
2019-07-22 TOKI Yoshinori <toki@freedom.ne.jp>
|
26
|
+
|
27
|
+
* lib/rims/cmd.rb, lib/rims/protocol/decoder.rb,
|
28
|
+
lib/rims/protocol/parser.rb, lib/rims/service.rb: charset aliases
|
29
|
+
option.
|
30
|
+
|
31
|
+
2019-07-20 TOKI Yoshinori <toki@freedom.ne.jp>
|
32
|
+
|
33
|
+
* lib/rims/protocol/decoder.rb, lib/rims/protocol/parser.rb:
|
34
|
+
case-insensitive matching of SEARCH command.
|
35
|
+
|
36
|
+
See RFC3501 / 6.4.4. SEARCH Command
|
37
|
+
<https://tools.ietf.org/html/rfc3501#section-6.4.4>
|
38
|
+
|
39
|
+
In all search keys that use strings, a message matches the key if
|
40
|
+
the string is a substring of the field. The matching is
|
41
|
+
case-insensitive.
|
42
|
+
|
43
|
+
* lib/rims/protocol/parser.rb: search for MIME encoded header
|
44
|
+
fields.
|
45
|
+
|
46
|
+
2019-07-09 TOKI Yoshinori <toki@freedom.ne.jp>
|
47
|
+
|
48
|
+
* RIMS version 0.2.6 is released.
|
49
|
+
|
1
50
|
2019-07-08 TOKI Yoshinori <toki@freedom.ne.jp>
|
2
51
|
|
3
52
|
* lib/rims/cmd.rb: disable plug-in name list on plug-in command
|
data/Rakefile
CHANGED
@@ -28,14 +28,18 @@ Rake::RDocTask.new do |rd|
|
|
28
28
|
rd.rdoc_files.include('lib/**/*.rb')
|
29
29
|
end
|
30
30
|
|
31
|
+
rule '.html' => '.md' do |t|
|
32
|
+
sh "pandoc --from=markdown --to=html5 --standalone --self-contained --css=$HOME/.pandoc/github.css --output=#{t.name} #{t.source}"
|
33
|
+
end
|
34
|
+
|
31
35
|
desc 'Build README.html from markdown source'
|
32
36
|
task :readme => %w[ README.html ]
|
33
|
-
|
34
|
-
file 'README.html' => [ 'README.md' ] do
|
35
|
-
sh "pandoc --from=markdown --to=html5 --standalone --self-contained --css=$HOME/.pandoc/github.css --output=README.html README.md"
|
36
|
-
end
|
37
37
|
CLOBBER.include 'README.html'
|
38
38
|
|
39
|
+
desc 'Build CHANGELOG.html from markdown source'
|
40
|
+
task :changelog => %w[ CHANGELOG.html ]
|
41
|
+
CLOBBER.include 'CHANGELOG.html'
|
42
|
+
|
39
43
|
namespace :test_cert do
|
40
44
|
tls_dir = Pathname('test/tls')
|
41
45
|
|
data/lib/rims.rb
CHANGED
@@ -5,35 +5,37 @@ require "rims/version"
|
|
5
5
|
autoload :OpenSSL, 'openssl'
|
6
6
|
|
7
7
|
module RIMS
|
8
|
-
autoload :Authentication,
|
9
|
-
autoload :Checksum_KeyValueStore,
|
10
|
-
autoload :Cmd,
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :Hash_KeyValueStore,
|
16
|
-
autoload :IllegalLockError,
|
17
|
-
autoload :KeyValueStore,
|
18
|
-
autoload :
|
19
|
-
autoload :
|
20
|
-
autoload :
|
21
|
-
autoload :
|
22
|
-
autoload :
|
23
|
-
autoload :MessageSetSyntaxError,
|
24
|
-
autoload :Password,
|
25
|
-
autoload :Protocol,
|
26
|
-
autoload :ProtocolError,
|
27
|
-
autoload :RFC822,
|
28
|
-
autoload :ReadLockError,
|
29
|
-
autoload :ReadLockTimeoutError,
|
30
|
-
autoload :
|
31
|
-
autoload :
|
32
|
-
autoload :
|
33
|
-
autoload :
|
34
|
-
autoload :
|
35
|
-
autoload :
|
36
|
-
autoload :
|
8
|
+
autoload :Authentication, 'rims/auth'
|
9
|
+
autoload :Checksum_KeyValueStore, 'rims/cksum_kvs'
|
10
|
+
autoload :Cmd, 'rims/cmd'
|
11
|
+
autoload :CommandSizeTooLargeError, 'rims/protocol'
|
12
|
+
autoload :DB, 'rims/db'
|
13
|
+
autoload :Error, 'rims/error'
|
14
|
+
autoload :GDBM_KeyValueStore, 'rims/gdbm_kvs'
|
15
|
+
autoload :Hash_KeyValueStore, 'rims/hash_kvs'
|
16
|
+
autoload :IllegalLockError, 'rims/lock'
|
17
|
+
autoload :KeyValueStore, 'rims/kvs'
|
18
|
+
autoload :LineTooLongError, 'rims/protocol'
|
19
|
+
autoload :LiteralSizeTooLargeError, 'rims/protocol'
|
20
|
+
autoload :LockError, 'rims/lock'
|
21
|
+
autoload :MailFolder, 'rims/mail_store'
|
22
|
+
autoload :MailStore, 'rims/mail_store'
|
23
|
+
autoload :MessageSetSyntaxError, 'rims/protocol'
|
24
|
+
autoload :Password, 'rims/passwd'
|
25
|
+
autoload :Protocol, 'rims/protocol'
|
26
|
+
autoload :ProtocolError, 'rims/protocol'
|
27
|
+
autoload :RFC822, 'rims/rfc822'
|
28
|
+
autoload :ReadLockError, 'rims/lock'
|
29
|
+
autoload :ReadLockTimeoutError, 'rims/lock'
|
30
|
+
autoload :ReadSizeError, 'rims/protocol'
|
31
|
+
autoload :ReadWriteLock, 'rims/lock'
|
32
|
+
autoload :RecoverableReadSizeError, 'rims/protocol'
|
33
|
+
autoload :ServerResponseChannel, 'rims/channel'
|
34
|
+
autoload :Service, 'rims/service'
|
35
|
+
autoload :SyntaxError, 'rims/protocol'
|
36
|
+
autoload :Test, 'rims/test'
|
37
|
+
autoload :WriteLockError, 'rims/lock'
|
38
|
+
autoload :WriteLockTimeoutError, 'rims/lock'
|
37
39
|
end
|
38
40
|
|
39
41
|
# Local Variables:
|
data/lib/rims/channel.rb
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
+
require 'forwardable'
|
4
|
+
|
3
5
|
module RIMS
|
6
|
+
class ServerResponseChannelError < Error
|
7
|
+
end
|
8
|
+
|
9
|
+
class ServerResponseChannelAttachError < ServerResponseChannelError
|
10
|
+
end
|
11
|
+
|
12
|
+
class ServerResponseChannelDetachError < ServerResponseChannelError
|
13
|
+
end
|
14
|
+
|
15
|
+
class ServerResponseChannelPublishError < ServerResponseChannelError
|
16
|
+
end
|
17
|
+
|
4
18
|
class ServerResponseChannel
|
5
19
|
def initialize
|
6
20
|
@mutex = Thread::Mutex.new
|
@@ -9,14 +23,16 @@ module RIMS
|
|
9
23
|
|
10
24
|
def make_pub_sub_pair(mbox_id)
|
11
25
|
pub = ServerResponsePublisher.new(self, mbox_id)
|
12
|
-
sub = ServerResponseSubscriber.new(self,
|
26
|
+
sub = ServerResponseSubscriber.new(self, pub)
|
13
27
|
return pub, attach(sub)
|
14
28
|
end
|
15
29
|
|
16
30
|
def attach(sub)
|
17
31
|
@mutex.synchronize{
|
18
32
|
@channel[sub.mbox_id] ||= {}
|
19
|
-
(@channel[sub.mbox_id].key? sub.pub_sub_pair_key)
|
33
|
+
if (@channel[sub.mbox_id].key? sub.pub_sub_pair_key) then
|
34
|
+
raise ServerResponseChannelAttachError.new('conflicted subscriber.', channel: self, subscriber: sub)
|
35
|
+
end
|
20
36
|
@channel[sub.mbox_id][sub.pub_sub_pair_key] = sub
|
21
37
|
}
|
22
38
|
|
@@ -30,8 +46,13 @@ module RIMS
|
|
30
46
|
# - ServerResponseSubscriber#detach
|
31
47
|
def detach(sub)
|
32
48
|
@mutex.synchronize{
|
33
|
-
((@channel.key? sub.mbox_id) && (@channel[sub.mbox_id].key? sub.pub_sub_pair_key))
|
34
|
-
|
49
|
+
unless ((@channel.key? sub.mbox_id) && (@channel[sub.mbox_id].key? sub.pub_sub_pair_key)) then
|
50
|
+
raise ServerResponseChannelDetachError.new('unregistered pub-sub pair.', channel: self, subscriber: sub)
|
51
|
+
end
|
52
|
+
|
53
|
+
unless (@channel[sub.mbox_id][sub.pub_sub_pair_key] == sub) then
|
54
|
+
raise ServerResponseChannelDetachError.new('internal error: mismatched subscriber.', channel: self, subscribe: sub)
|
55
|
+
end
|
35
56
|
|
36
57
|
@channel[sub.mbox_id].delete(sub.pub_sub_pair_key)
|
37
58
|
if (@channel[sub.mbox_id].empty?) then
|
@@ -74,7 +95,12 @@ module RIMS
|
|
74
95
|
end
|
75
96
|
|
76
97
|
def publish(response_message)
|
77
|
-
@channel
|
98
|
+
unless (@channel) then
|
99
|
+
raise ServerResponseChannelPublishError.new('detached publisher.',
|
100
|
+
publisher: self,
|
101
|
+
pub_sub_pair_key: pub_sub_pair_key,
|
102
|
+
message: response_message)
|
103
|
+
end
|
78
104
|
@channel.publish(@mbox_id, pub_sub_pair_key, response_message)
|
79
105
|
nil
|
80
106
|
end
|
@@ -89,15 +115,14 @@ module RIMS
|
|
89
115
|
# do not call this method directly, call the following method
|
90
116
|
# instead.
|
91
117
|
# - ServerResponseChannel#make_pub_sub_pair
|
92
|
-
def initialize(channel,
|
118
|
+
def initialize(channel, pub)
|
93
119
|
@channel = channel
|
94
|
-
@
|
95
|
-
@pub_sub_pair_key = pub_sub_pair_key
|
120
|
+
@pub = pub
|
96
121
|
@queue = Thread::Queue.new
|
97
122
|
end
|
98
123
|
|
99
|
-
|
100
|
-
|
124
|
+
extend Forwardable
|
125
|
+
def_delegators :@pub, :mbox_id, :pub_sub_pair_key
|
101
126
|
|
102
127
|
# do not call this method directly, call the following method
|
103
128
|
# instead.
|
data/lib/rims/cmd.rb
CHANGED
@@ -325,6 +325,16 @@ module RIMS
|
|
325
325
|
})
|
326
326
|
}
|
327
327
|
end
|
328
|
+
options.on('--daemon-umask=UMASK',
|
329
|
+
Integer,
|
330
|
+
"Umask(2). effective only with daemon command. default is `#{'%04o' % Service::DEFAULT_CONFIG.daemon_umask}'."
|
331
|
+
) do |umask|
|
332
|
+
build.chain{|c|
|
333
|
+
c.load(daemon: {
|
334
|
+
umask: umask
|
335
|
+
})
|
336
|
+
}
|
337
|
+
end
|
328
338
|
options.on('--status-file=FILE',
|
329
339
|
String,
|
330
340
|
"Name of status file. effective only with daemon command. default is `#{Service::DEFAULT_CONFIG.status_file}'."
|
@@ -462,6 +472,85 @@ module RIMS
|
|
462
472
|
})
|
463
473
|
}
|
464
474
|
end
|
475
|
+
options.on('--line-length-limit=SIZE',
|
476
|
+
Integer
|
477
|
+
) do |size|
|
478
|
+
build.chain{|c|
|
479
|
+
c.load(protocol: {
|
480
|
+
line_length_limit: size
|
481
|
+
})
|
482
|
+
}
|
483
|
+
end
|
484
|
+
options.on('--literal-size-limit=SIZE',
|
485
|
+
Integer
|
486
|
+
) do |size|
|
487
|
+
build.chain{|c|
|
488
|
+
c.load(protocol: {
|
489
|
+
literal_size_limit: size
|
490
|
+
})
|
491
|
+
}
|
492
|
+
end
|
493
|
+
options.on('--command-size-limit=SIZE',
|
494
|
+
Integer
|
495
|
+
) do |size|
|
496
|
+
build.chain{|c|
|
497
|
+
c.load(protocol: {
|
498
|
+
command_size_limit: size
|
499
|
+
})
|
500
|
+
}
|
501
|
+
end
|
502
|
+
options.on('--[no-]use-default-charset-aliases'
|
503
|
+
) do |use_default_aliases|
|
504
|
+
build.chain{|c|
|
505
|
+
c.load(charset: {
|
506
|
+
use_default_aliases: use_default_aliases
|
507
|
+
})
|
508
|
+
}
|
509
|
+
end
|
510
|
+
options.on('--add-charset-alias=NAME_TO_ENCODING',
|
511
|
+
/\A \S+,\S+ \z/x,
|
512
|
+
"Set the alias name and encoding separated with comma (,)."
|
513
|
+
) do |name_to_encoding|
|
514
|
+
name, encoding = name_to_encoding.split(',', 2)
|
515
|
+
build.chain{|c|
|
516
|
+
c.load(charset: {
|
517
|
+
aliases: [
|
518
|
+
{ name: name, encoding: encoding }
|
519
|
+
]
|
520
|
+
})
|
521
|
+
}
|
522
|
+
end
|
523
|
+
options.on('--[no-]replace-charset-invalid'
|
524
|
+
) do |replace|
|
525
|
+
build.chain{|c|
|
526
|
+
c.load(charset: {
|
527
|
+
convert_options: {
|
528
|
+
replace_invalid_byte_sequence: replace
|
529
|
+
}
|
530
|
+
})
|
531
|
+
}
|
532
|
+
end
|
533
|
+
options.on('--[no-]replace-charset-undef'
|
534
|
+
) do |replace|
|
535
|
+
build.chain{|c|
|
536
|
+
c.load(charset: {
|
537
|
+
convert_options: {
|
538
|
+
replace_undefined_character: replace
|
539
|
+
}
|
540
|
+
})
|
541
|
+
}
|
542
|
+
end
|
543
|
+
options.on('--charset-replaced-mark=MARK',
|
544
|
+
String
|
545
|
+
) do |mark|
|
546
|
+
build.chain{|c|
|
547
|
+
c.load(charset: {
|
548
|
+
convert_options: {
|
549
|
+
replaced_mark: mark
|
550
|
+
}
|
551
|
+
})
|
552
|
+
}
|
553
|
+
end
|
465
554
|
options.on('--drb-process-num=NUMBER',
|
466
555
|
Integer
|
467
556
|
) do |num|
|
@@ -471,6 +560,15 @@ module RIMS
|
|
471
560
|
})
|
472
561
|
}
|
473
562
|
end
|
563
|
+
options.on('--drb-load-limit=SIZE',
|
564
|
+
Integer
|
565
|
+
) do |size|
|
566
|
+
build.chain{|c|
|
567
|
+
c.load(drb_services: {
|
568
|
+
load_limit: size
|
569
|
+
})
|
570
|
+
}
|
571
|
+
end
|
474
572
|
options.on('--bulk-response-count=COUNT',
|
475
573
|
Integer) do |count|
|
476
574
|
build.chain{|c|
|
@@ -481,6 +579,16 @@ module RIMS
|
|
481
579
|
})
|
482
580
|
}
|
483
581
|
end
|
582
|
+
options.on('--bulk-response-size=SIZE',
|
583
|
+
Integer) do |size|
|
584
|
+
build.chain{|c|
|
585
|
+
c.load(drb_services: {
|
586
|
+
engine: {
|
587
|
+
bulk_response_size: size
|
588
|
+
}
|
589
|
+
})
|
590
|
+
}
|
591
|
+
end
|
484
592
|
options.on('--read-lock-timeout=SECONDS',
|
485
593
|
Float
|
486
594
|
) do |seconds|
|
@@ -515,7 +623,6 @@ module RIMS
|
|
515
623
|
}
|
516
624
|
end
|
517
625
|
options.on('--meta-kvs-type=TYPE',
|
518
|
-
KeyValueStore::FactoryBuilder.plug_in_names,
|
519
626
|
"Choose key-value store type of mailbox meta-data database. default is `" +
|
520
627
|
KeyValueStore::FactoryBuilder.plug_in_names[0] +
|
521
628
|
"'."
|
@@ -558,7 +665,6 @@ module RIMS
|
|
558
665
|
}
|
559
666
|
end
|
560
667
|
options.on('--text-kvs-type=TYPE',
|
561
|
-
KeyValueStore::FactoryBuilder.plug_in_names,
|
562
668
|
"Choose key-value store type of mailbox text-data database. default is `" +
|
563
669
|
KeyValueStore::FactoryBuilder.plug_in_names[0] +
|
564
670
|
"'."
|
@@ -684,7 +790,6 @@ module RIMS
|
|
684
790
|
build.chain{|c| c.load(ip_port: port) }
|
685
791
|
end
|
686
792
|
options.on('--kvs-type=TYPE',
|
687
|
-
KeyValueStore::FactoryBuilder.plug_in_names,
|
688
793
|
'Deplicated.'
|
689
794
|
) do |kvs_type|
|
690
795
|
warn("warning: `--kvs-type=TYPE' is deplicated option and should use `--meta-kvs-type=TYPE' or `--text-kvs-type=TYPE'.")
|
@@ -1074,6 +1179,7 @@ module RIMS
|
|
1074
1179
|
Riser::Daemon.start_daemon(daemonize: svc_conf.daemonize?,
|
1075
1180
|
daemon_name: svc_conf.daemon_name,
|
1076
1181
|
daemon_debug: svc_conf.daemon_debug?,
|
1182
|
+
daemon_umask: svc_conf.daemon_umask,
|
1077
1183
|
status_file: svc_conf.status_file,
|
1078
1184
|
listen_address: proc{
|
1079
1185
|
# to reload on server restart
|