teakflake 0.1.4 → 0.1.5
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/CHANGELOG.md +11 -0
- data/Gemfile.lock +16 -10
- data/lib/teakflake/server.rb +11 -1
- data/lib/teakflake/version.rb +1 -1
- data/lib/teakflake/worker_id_sources/static_worker_id.rb +14 -2
- data/teakflake.gemspec +4 -1
- metadata +37 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 560d11d7fe0fe920474447c525110c05643ca515c71a332cd42af17a752f2027
|
|
4
|
+
data.tar.gz: bfb71079d0bfaaaa1fb1aac85582c21cabeb58980c97a055056cb9432cdefabc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: baa8fb219bf903d62ecefddbcb94cd9f65139013482834236a25b72ced1ae4369493ec6824a20357fa873035ad51ecc607123a8d658cd01ddbfca59618be4ff3
|
|
7
|
+
data.tar.gz: 5637a46c5563314bda23987c3c57c6cefef238d5cb4801934e5e30850f61cc5a1843d99d3109054218d6c16d700ace81b5145b2ba27d35f613206a0fa02134f2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## 0.1.5
|
|
2
|
+
|
|
3
|
+
ENHANCEMENTS:
|
|
4
|
+
|
|
5
|
+
* `TEAKFLAKE_ADVERTISE_ADDR` (a bare host or IP) sets the advertised address. Without it, falls back to the hostname's canonname. (C-2042)
|
|
6
|
+
* Log the claimed worker id, advertised URL and every peer after registering. (C-2045)
|
|
7
|
+
|
|
8
|
+
BUG FIXES:
|
|
9
|
+
|
|
10
|
+
* Declare `logger` and `benchmark`, which zookeeper requires without declaring and Ruby 4.0 dropped from the default gems. Raise the rack floor to 2.2.24. (C-2024)
|
|
11
|
+
|
|
1
12
|
## 0.1.4
|
|
2
13
|
|
|
3
14
|
BUG FIXES:
|
data/Gemfile.lock
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
teakflake (0.1.
|
|
4
|
+
teakflake (0.1.5)
|
|
5
|
+
benchmark
|
|
6
|
+
logger
|
|
5
7
|
logsformyfamily (~> 0.3.0)
|
|
6
|
-
rack (~> 2.2, >= 2.2.
|
|
8
|
+
rack (~> 2.2, >= 2.2.24)
|
|
7
9
|
zk (~> 1.10)
|
|
8
10
|
|
|
9
11
|
GEM
|
|
10
12
|
remote: https://rubygems.org/
|
|
11
13
|
specs:
|
|
12
|
-
addressable (2.
|
|
13
|
-
public_suffix (>= 2.0.2, <
|
|
14
|
+
addressable (2.9.1)
|
|
15
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
16
|
+
benchmark (0.5.0)
|
|
14
17
|
benchmark-ips (2.10.0)
|
|
15
|
-
|
|
18
|
+
bigdecimal (4.1.3)
|
|
19
|
+
crack (1.0.1)
|
|
20
|
+
bigdecimal
|
|
16
21
|
rexml
|
|
17
22
|
diff-lcs (1.5.0)
|
|
18
23
|
docile (1.4.0)
|
|
19
|
-
hashdiff (1.
|
|
24
|
+
hashdiff (1.2.1)
|
|
25
|
+
logger (1.7.0)
|
|
20
26
|
logsformyfamily (0.3.0)
|
|
21
|
-
public_suffix (
|
|
22
|
-
rack (2.2.
|
|
27
|
+
public_suffix (7.0.5)
|
|
28
|
+
rack (2.2.25)
|
|
23
29
|
rack-test (1.1.0)
|
|
24
30
|
rack (>= 1.0, < 3)
|
|
25
31
|
rake (13.0.6)
|
|
26
|
-
rexml (3.
|
|
32
|
+
rexml (3.4.4)
|
|
27
33
|
rspec (3.11.0)
|
|
28
34
|
rspec-core (~> 3.11.0)
|
|
29
35
|
rspec-expectations (~> 3.11.0)
|
|
@@ -44,7 +50,7 @@ GEM
|
|
|
44
50
|
simplecov-html (0.12.3)
|
|
45
51
|
simplecov_json_formatter (0.1.4)
|
|
46
52
|
stackprof (0.2.19)
|
|
47
|
-
webmock (3.
|
|
53
|
+
webmock (3.34.0)
|
|
48
54
|
addressable (>= 2.8.0)
|
|
49
55
|
crack (>= 0.3.2)
|
|
50
56
|
hashdiff (>= 0.4.0, < 2.0.0)
|
data/lib/teakflake/server.rb
CHANGED
|
@@ -68,7 +68,7 @@ module Teakflake
|
|
|
68
68
|
ZK::Client::Threaded.new(config[:zookeeper_servers].join(',')),
|
|
69
69
|
config[:datacenter_id],
|
|
70
70
|
ENV['WORKER_ID'].to_i,
|
|
71
|
-
|
|
71
|
+
advertise_addr,
|
|
72
72
|
ProcessClock.new
|
|
73
73
|
)
|
|
74
74
|
id_assigner.sanity_check_peers
|
|
@@ -90,6 +90,16 @@ module Teakflake
|
|
|
90
90
|
|
|
91
91
|
private
|
|
92
92
|
|
|
93
|
+
# TEAKFLAKE_ADVERTISE_ADDR is a bare host or IP. Without it we advertise the hostname's canonname, which
|
|
94
|
+
# only resolves for peers if the host's resolver/hosts file says so.
|
|
95
|
+
def advertise_addr
|
|
96
|
+
host = ENV['TEAKFLAKE_ADVERTISE_ADDR'].to_s.strip
|
|
97
|
+
if host.empty?
|
|
98
|
+
host = Addrinfo.getaddrinfo(@hostname, nil, nil, :STREAM, nil, Socket::AI_CANONNAME).first.canonname
|
|
99
|
+
end
|
|
100
|
+
"http://#{host}:#{config[:server_port]}"
|
|
101
|
+
end
|
|
102
|
+
|
|
93
103
|
POST_BODY = 'rack.input'.freeze
|
|
94
104
|
FORM_INPUT = 'rack.request.form_input'.freeze
|
|
95
105
|
FORM_HASH = 'rack.request.form_hash'.freeze
|
data/lib/teakflake/version.rb
CHANGED
|
@@ -55,6 +55,7 @@ module Teakflake
|
|
|
55
55
|
end
|
|
56
56
|
@id_registered = true
|
|
57
57
|
logger.info(:claimed_worker_id, id: @worker_id)
|
|
58
|
+
log_registration
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
def assert(_time)
|
|
@@ -102,7 +103,20 @@ module Teakflake
|
|
|
102
103
|
JSON.parse(response.body).dig('response', 'ids', 0)
|
|
103
104
|
end
|
|
104
105
|
|
|
106
|
+
# One line with everything needed to see what each node advertised, without reading ZK by hand.
|
|
107
|
+
def log_registration
|
|
108
|
+
logger.info(:registered_worker, id: @worker_id, addr: @addr, peers: read_peers)
|
|
109
|
+
rescue StandardError => e
|
|
110
|
+
logger.warning(:registered_worker_peers_unreadable, id: @worker_id, addr: @addr, message: e.message)
|
|
111
|
+
end
|
|
112
|
+
|
|
105
113
|
def peers
|
|
114
|
+
found = read_peers
|
|
115
|
+
logger.info(:found_peers, peers: found)
|
|
116
|
+
found
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def read_peers
|
|
106
120
|
begin
|
|
107
121
|
@zookeeper.get(@worker_id_zk_path)
|
|
108
122
|
rescue ZK::Exceptions::NoNode
|
|
@@ -116,8 +130,6 @@ module Teakflake
|
|
|
116
130
|
hash[child.to_i] = info[0]
|
|
117
131
|
end
|
|
118
132
|
|
|
119
|
-
logger.info(:found_peers, peers: peers)
|
|
120
|
-
|
|
121
133
|
peers
|
|
122
134
|
end
|
|
123
135
|
end
|
data/teakflake.gemspec
CHANGED
|
@@ -28,5 +28,8 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
|
|
29
29
|
spec.add_dependency 'logsformyfamily', '~> 0.3.0'
|
|
30
30
|
spec.add_dependency 'zk', '~> 1.10'
|
|
31
|
-
spec.add_dependency 'rack', '~> 2.2', '>= 2.2.
|
|
31
|
+
spec.add_dependency 'rack', '~> 2.2', '>= 2.2.24'
|
|
32
|
+
# zookeeper 1.5.5 requires these without declaring them, and Ruby 4.0 dropped both from the default gems.
|
|
33
|
+
spec.add_dependency 'logger'
|
|
34
|
+
spec.add_dependency 'benchmark'
|
|
32
35
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: teakflake
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Scarborough
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-10-31 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: logsformyfamily
|
|
@@ -46,7 +47,7 @@ dependencies:
|
|
|
46
47
|
version: '2.2'
|
|
47
48
|
- - ">="
|
|
48
49
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 2.2.
|
|
50
|
+
version: 2.2.24
|
|
50
51
|
type: :runtime
|
|
51
52
|
prerelease: false
|
|
52
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,7 +57,36 @@ dependencies:
|
|
|
56
57
|
version: '2.2'
|
|
57
58
|
- - ">="
|
|
58
59
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 2.2.
|
|
60
|
+
version: 2.2.24
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
62
|
+
name: logger
|
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
type: :runtime
|
|
69
|
+
prerelease: false
|
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
76
|
+
name: benchmark
|
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
82
|
+
type: :runtime
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
description:
|
|
60
90
|
email:
|
|
61
91
|
- alex@teak.io
|
|
62
92
|
executables: []
|
|
@@ -90,6 +120,7 @@ metadata:
|
|
|
90
120
|
homepage_uri: https://github.com/GoCarrot/teakflake
|
|
91
121
|
source_code_uri: https://github.com/GoCarrot/teakflake
|
|
92
122
|
changelog_uri: https://github.com/GoCarrot/teakflake/blob/main/CHANGELOG.md
|
|
123
|
+
post_install_message:
|
|
93
124
|
rdoc_options: []
|
|
94
125
|
require_paths:
|
|
95
126
|
- lib
|
|
@@ -104,7 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
104
135
|
- !ruby/object:Gem::Version
|
|
105
136
|
version: '0'
|
|
106
137
|
requirements: []
|
|
107
|
-
rubygems_version: 3.
|
|
138
|
+
rubygems_version: 3.5.22
|
|
139
|
+
signing_key:
|
|
108
140
|
specification_version: 4
|
|
109
141
|
summary: Generate Twitter Snowflake style ids.
|
|
110
142
|
test_files: []
|