@@ -22,8 +22,53 @@ local memtx_memory = tonumber(os.getenv("TARANTOOL_MEMTX_MEMORY")) or (128 * 102
2222
2323local http_port = os.getenv (" TARANTOOL_HTTP_PORT" ) or 8081
2424
25- fiber .sleep (10 )
26- local ok , err = cartridge .cfg ({
25+ local fiber = require (' fiber' )
26+ local log = require (' log' )
27+
28+ local http_client = require (' http.client' )
29+ local http_server = require (' http.server' )
30+
31+ local function resolve_uri (uri , timeout )
32+ if not uri then
33+ return nil , " Pass URI in the next format: uri:port"
34+ end
35+
36+ timeout = timeout or 10
37+ -- local uri, port = uri:match("(^.*)%:(.*)")
38+ local resolved = false
39+
40+ local server_options = {
41+ log_errors = true ,
42+ log_requests = log .debug
43+ }
44+
45+ local srv = http_server .new (" 0.0.0.0" , " 3301" , server_options )
46+ srv :route ({ path = ' /dns_resolver' , method = ' GET' }, function (_ ) return { status = 200 , text = ' Success' } end )
47+ srv :start ()
48+
49+ local time = 0
50+ while time < timeout do
51+ local resp = http_client .get (uri .. ' /dns_resolver' )
52+ if resp .status ~= nil and resp .status == 200 then
53+ resolved = true
54+ break
55+ else
56+ print (' Not resolved yet' )
57+ end
58+
59+ fiber .sleep (1 )
60+ time = time + 1
61+ end
62+ srv :stop ()
63+
64+ return resolved
65+ end
66+
67+ local t = resolve_uri (advertise_uri , 50 )
68+ if not t then os.exit (1 ) end
69+ fiber .sleep (5 )
70+
71+ local ok , err = cluster .cfg ({
2772 alias = instance_name ,
2873 workdir = work_dir ,
2974 advertise_uri = advertise_uri ,
0 commit comments