Пятница, 17 апреля 2020, 9:25 +03:00 от Mergen Imeev <imeevma@tarantool.org>:
 
On Thu, Apr 16, 2020 at 10:04:16PM +0000, Nikita Pettik wrote:
> On 17 Apr 00:15, Mergen Imeev wrote:
> > On Thu, Apr 16, 2020 at 09:02:05PM +0000, Nikita Pettik wrote:
> > > On 16 Apr 23:24, Mergen Imeev wrote:
> > > > Hi! Thank you for review. My answer below.
> > > >
> > > > On Thu, Apr 16, 2020 at 07:18:51PM +0000, Nikita Pettik wrote:
> > > > > On 16 Apr 22:09, Alexander Tikhonov wrote:
> > > > > >
> > > > > > Hi Mergen, thanks for the patch, I’ve checked it on 2.2 and it runs fine, patch LGTM.
> > > > > >
> > > > >
> > > > > Did you verify that modified test still reproduces initial problem?
> > > > > I hope so, but ask just in case.
> > > > According to history, the main goal of this part of the
> > > > test is to show that sql_create_function() throws proper
> > > > error in case a new function is created when transaction
> > > > is active. Since the error still here, we may say that
> > > > the test works.
> > >
> > > So the answer to my question is - no, you didn't test it.
> > > Better safe than sorry - I'd better verify that updated
> > > test still covers the initial problem. Thanks.
> > >
> > Doesn't my answer says that we checked it?
>
> No, it doesn't. 'reproduce' means that you are supposed to checkout
> to branch, revert particular fix, run updated test without that fix
> and verify that test fails without fix. Any other actions do not refer
> to my original question.
>
> >However, I agree that it is never wrong to check it again.
>
> Please, check it for current fix and for any other test
> upgrade in future.
>
To check this I changed the value in fiber.sleep() function
on line 12 to 0.3 in the test before the patch. After that
the test fails with this result:

[001] Test failed! Result content mismatch:
[001] --- sql/func-recreate.result Fri Apr 17 09:13:48 2020
[001] +++ sql/func-recreate.reject Fri Apr 17 09:17:52 2020
[001] @@ -21,13 +21,11 @@
[001] _ = fiber.create(function () ch:put(box.execute('select WAITFOR(0.2)')) end)
[001] ---
[001] ...
[001] -fiber.sleep(0.1)
[001] +fiber.sleep(0.3)
[001] ---
[001] ...
[001] box.internal.sql_create_function('WAITFOR', 'INT', function (n) require('fiber').sleep(n) return n end)
[001] ---
[001] -- error: 'Failed to create function ''WAITFOR'': unable to create function due to
[001] - active statements'
[001] ...
[001] ch:get()
[001] ---

As you can see, the error dissappeared.

This time we got this fail after we changed the test, but
it is possible to get it even without changing. This
happens when the computher which runs this test is too
heavy loaded. But this won't happen after the patch.

Is this good enough?
 
I can only agree here, I’ve tried it too before the patch was created, while the issue was researched.
 
--
Alexander Tikhonov