Tarantool development patches archive
 help / color / mirror / Atom feed
From: Igor Munkin <imun@tarantool.org>
To: Alexander Turenko <alexander.turenko@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH 2/2] popen: add popen Lua module
Date: Mon, 20 Apr 2020 04:21:52 +0300	[thread overview]
Message-ID: <20200420012152.GW8314@tarantool.org> (raw)
In-Reply-To: <20200419222434.nnus7jnm2hgmeq6p@tkn_work_nb>

Sasha,

On 20.04.20, Alexander Turenko wrote:
> Thanks for the careful proofreading!
> 
> Aside of changes below I changed `popen.stream.OPENED (== 'opened')` to
> `popen.stream.OPEN (== 'open')` to match english grammar. Same for
> statuses -> status (yep, 'statuses' is allowed in English, but it is
> ugly).

Yep, that's the way much better.

> 
> Force-pushed Totktonada/gh-4031-popen-13-full-ci.
> 
> WBR, Alexander Turenko.
> 
> ----
> 

<snipped>

> 
> > > @param opts.env  an array of environment variables to
> > >                  be used inside a process;
> > >                  - when is not set then the current
> > >                    environment is inherited;
> > >                  - if set then the environment will be
> > >                    replaced
> > >                  - if set to an empty array then the
> > >                    environment will be dropped
> > 
> > Minor: I looks more convenient to sort the lines above the following
> > way:
> > * when is not set <...>
> > * if set to an empty table <...>
> > * if set to a non-empty table <...>
> 
> I don't mind.
> 
> Reordered in the code and the commit message.
> 
> Also I rephrased the description a bit to highlight the fact that the
> parameter is key-value mapping, not an array.

Good remark, thanks.

> 

<snipped>

> 
> > > The returned handle is subject to garbage collection, but
> > > it may be freed explicitly using :close(). SIGKILL is sent
> > > to the child process at :close() / GC if it is alive and
> > > opts.keep_child is not set.
> > 
> > Minor: Let's adjust the terminology. What do you mean speaking about
> > "handle"? If it's a GC object, then there is no way to release it
> > manually or "explicitly", only via platform GC. If it's a GC object
> > *payload* then it's not managed by Lua GC and need to be explicitly
> > released via special method or the corresponding __gc metamethod.
> 
> My intention is to give two ideas here:
> 
> * Feel free to use explicit :close() or lean on Lua GC.
> * :close() / GC handler kills the child process.
> 
> But being strict in terms and wording is goal for me too, so I reword
> the paragraph to eliminate phrases, which requires a GC object / a GC
> object payload as an object / a subject.
> 
> Changed in the code and the commit:
> 
> diff --git a/src/lua/popen.c b/src/lua/popen.c
> index ec8c95662..31b4bc2b0 100644
> --- a/src/lua/popen.c
> +++ b/src/lua/popen.c
> @@ -1184,10 +1184,11 @@ luaT_popen_parse_mode(struct lua_State *L, int idx)
>   *                              :close() or collecting of the
>   *                              handle by Lua GC
>   *
> - * The returned handle is subject to garbage collection, but
> - * it may be freed explicitly using :close(). SIGKILL is sent
> - * to the child process at :close() / GC if it is alive and
> - * opts.keep_child is not set.
> + * The returned handle provides :close() method to explicitly
> + * release all occupied resources (including the child process
> + * itself if @a opts.keep_child is not set). However if the
> + * method is not called for a handle during its lifetime, the
> + * same freeing actions will be triggered by Lua GC.
>   *
>   * It is recommended to use opts.setsid + opts.group_signal
>   * if a child process may spawn its own childs and they all

Nice, now it's clear, thanks!

> 

<snipped>

> 
> > > Return `nil, err` on a failure. Possible reasons:
> > > 
> > > - SocketError: an IO error occurs at read().
> > 
> > SocketError on pipe looks ridiculous to me. Maybe an IO one?
> 
> It comes from coio.cc. It would be good to refactor it someday, but not
> tonight :)

And there is only one thing we say to Refactoring: “not today” :)

> 

<snipped>

-- 
Best regards,
IM

  reply	other threads:[~2020-04-20  1:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-18  4:13 [Tarantool-patches] [PATCH 0/2] Popen " Alexander Turenko
2020-04-18  4:13 ` [Tarantool-patches] [PATCH 1/2] popen: always free resources in popen_delete() Alexander Turenko
2020-04-18  6:55   ` Cyrill Gorcunov
2020-04-18  4:13 ` [Tarantool-patches] [PATCH 2/2] popen: add popen Lua module Alexander Turenko
2020-04-18  6:57   ` Cyrill Gorcunov
2020-04-19 12:38   ` Igor Munkin
2020-04-19 22:24     ` Alexander Turenko
2020-04-20  1:21       ` Igor Munkin [this message]
2020-04-20  0:57   ` Igor Munkin
2020-04-20  6:38     ` Alexander Turenko
2020-04-20 11:57       ` Igor Munkin
2020-04-21 13:38         ` Alexander Turenko
2020-04-20  7:52 ` [Tarantool-patches] [PATCH 0/2] Popen " Kirill Yukhin

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=20200420012152.GW8314@tarantool.org \
    --to=imun@tarantool.org \
    --cc=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH 2/2] popen: add popen Lua module' \
    /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