From: Sergey Petrenko <sergepetrenko@tarantool.org> To: Konstantin Osipov <kostja@tarantool.org>, tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH] tarantoolctl: return an error on enter to a dead socket. Date: Wed, 18 Jul 2018 12:19:42 +0300 [thread overview] Message-ID: <865891b0-f41e-342c-6a02-309502ff1b8a@tarantool.org> (raw) In-Reply-To: <20180718051953.GA31091@chai> Hi! 18.07.2018 8:19, Konstantin Osipov пишет: > * Serge Petrenko <sergepetrenko@tarantool.org> [18/07/16 15:14]: > >> Tarantoolctl enter didn't check whether connection to a socket was established >> if a socket file existed. It just executed a local console. >> Fix this by adding a check and an error, also add a test case. >> >> Closes #3364 >> extra/dist/tarantoolctl.in | 19 ++++++++++++------- >> test/app-tap/tarantoolctl.test.lua | 29 ++++++++++++++++++++++++++++- >> 2 files changed, 40 insertions(+), 8 deletions(-) >> >> + local status, err = pcall(function() >> + test:test("check error codes in case of enter", function(test_i) >> + test_i:plan(6) >> + check_ok(test_i, dir, 'enter', 'script', 1, nil, "Can't connect to") >> + check_ok(test_i, dir, 'start', 'script', 0) >> + os.execute(("kill $(cat %s/script.pid)"):format(dir)) > I don't understand how this works. Simply sending > SIGTERM to tarantool would should it down gracefully and remove > the socket. If it doesn't, it's a bug. You should use SIGKILL if Doing tarantoolctl start testctl kill (tarantool instance pid) Leaves the socket intact on my pc. tarantoolctl stop also first explicitly deletes the socket file and then sends SIGTERM to the instance. Don't know if it's ok. > you wanted to create a dead socket. But then again why do you need > to start an instance in order to get a dead socket? Can't you make > it simpler and create a dead socket with fio API? Do you mean create a file with fio.open(sock, 'O_CREAT')? It won't be a 'real' socket, but I tried it, and the tests seem to work. Because AFAIU there is no way to create a unix socket without starting to listen on it. That's what I'm doing now: test_i:plan(4) check_ok(test_i, dir, 'enter', 'script', 1, nil, "Can't connect to") local console_sock = 'script.control' console_sock = fio.pathjoin(fio.dirname(dir), console_sock) fio.open(console_sock, 'O_CREAT') check_ok(test_i, dir, 'enter', 'script', 1, nil, "Can't connect to") fio.unlink(console_sock)
next prev parent reply other threads:[~2018-07-18 9:19 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-16 8:26 [tarantool-patches] " Serge Petrenko 2018-07-18 5:19 ` [tarantool-patches] " Konstantin Osipov 2018-07-18 9:19 ` Sergey Petrenko [this message] 2018-08-03 8:52 ` Sergey Petrenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=865891b0-f41e-342c-6a02-309502ff1b8a@tarantool.org \ --to=sergepetrenko@tarantool.org \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH] tarantoolctl: return an error on enter to a dead socket.' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox