Skip to content
Snippets Groups Projects
  1. Mar 26, 2020
  2. Mar 25, 2020
  3. Mar 23, 2020
    • Timur Safin's avatar
      evio: workaround for wsl1 so_linger assertion · 734bcafc
      Timur Safin authored
      
      SO_LINGER makes no much sense for unix-sockets, and Microsoft WSL
      is returning EINVAL if setsockopts called for SO_LINGER over unix
      sockets:
      
        [004] 2020-03-11 18:42:29.592 [29182] main/102/app sio.c:169 !> SystemError setsockopt(SO_LINGER), called on fd 16, aka
        [004] 2020-03-11 18:42:29.592 [29182] main/102/app F> can't initialize storage: setsockopt(SO_LINGER), called on fd 16,
        [004] 2020-03-11 18:42:29.592 [29182] main/102/app F> can't initialize storage: setsockopt(SO_LINGER), called on fd 16,
      
      And it's sort of correct here, but the problem is Linux is simply
      silently ignoring it, which passes tests.
      
      After much debates we decided to work-around this case via CMAKE
      define.
      
      NB! In a future (April/May 2020), when WSL2 with full Linux kernel
      would be released we should disable this check.
      
      Acked-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      734bcafc
  4. Mar 20, 2020
  5. Mar 19, 2020
    • Vladislav Shpilevoy's avatar
      iproto: show real port in logs and box.info.listen · 2c3acf2b
      Vladislav Shpilevoy authored
      Box.cfg{listen = 0} automatically chooses a port. But it was
      impossible to obtain a real port the instance is bound to.
      
      An ability to see a real port may help to make test-run more
      robust, because it won't depend on which ports are free, and
      won't need to pre-choose them in advance.
      
      Now box.info.listen shows a real address, or nil when listen is
      turned off. Also a real address is logged instead of the dummy
      0-port one.
      
      Closes #4620
      
      @TarantoolBot document
      Title: box.info.listen - real address
      
      New value in box.info - listen. It is a real address to which the
      instance was bound. For example, if box.cfg.listen was set with
      a zero port, box.info.listen will show a real port. The address
      is stored as a string:
      
          - unix/:<path> for UNIX domain sockets;
          - <ip>:<port> for IPv4;
          - [ip]:<port> for IPv6.
      
      If the instance does not listen anything, box.info.listen is nil.
      2c3acf2b
  6. Mar 18, 2020
    • Oleg Babin's avatar
      box: allow to retrieve the last generated value of sequence · 64c69fe0
      Oleg Babin authored
      
      This patch introduces "current" function for sequences.
      It returns the last retrieved value of specified sequence or
      throws an error if no value has been generated yet.
      
      This patch partially reverts 3ff1f1e3
      (box: remove sequence_get) here similar function "get" was removed
      to avoid possible misleading with "currval" function of PosgreSQL
      that returns the last obtained value of the sequence in the scope
      of current session. In contrast "current" returns the last globally
      retrieved value of the sequence.
      
      Closes #4752
      
      Reviewed-by: default avatarVladislav Shpilevoy <v.shpilevoy@tarantool.org>
      Reviewed-by: default avatarNikita Pettik <korablev@tarantool.org>
      
      @TarantoolBot document
      Title: sequence:current()
      
      This patch introduces "current" function for sequences.
      It returns the last retrieved value of specified sequence or
      throws an error if no value has been generated yet ("next"
      has not been called yet or right after "reset" is called).
      
      Lua:
      
      Example:
      
      ```lua
      sq = box.schema.sequence.create('test')
      ---
      ...
      sq:current()
      ---
      - error: Sequence 'test' is not started
      ...
      sq:next()
      ---
      - 1
      ...
      sq:current()
      ---
      - 1
      ...
      sq:set(42)
      ---
      ...
      sq:current()
      ---
      - 42
      ...
      sq:reset()
      ---
      ...
      sq:current()  -- error
      ---
      - error: Sequence 'test' is not started
      ...
      ```
      
      C API:
      
      ```C
      int
      box_sequence_current(uint32_t seq_id, int64_t *result);
      ```
      
      Where:
        * seq_id - sequence identifier;
        * result - pointer to a variable where the current sequence
        value will be stored on success.
      
      Returns 0 on success and -1 otherwise. In case of an error user
      could get it via `box_error_last()`.
      64c69fe0
  7. Mar 17, 2020
  8. Mar 16, 2020
    • Vladislav Shpilevoy's avatar
      tuple: document all missed box.tuple.* methods · adc98575
      Vladislav Shpilevoy authored
      In #4684 it was found that box.tuple.* contained some private
      functions: bless(), encode(), and is().
      
      Bless() and encode() didn't make any sense for a user, so they
      were hidden into box.internal.tuple.*.
      
      But box.tuple.is() is actually a useful thing. It is harnessed in
      the tests a lot, and is likely to be already used by customers,
      because it is available in box.tuple.* for a long time. It is a
      matter of time when someone will open a doc ticket saying that
      box.tuple.is() is not documented. The patch makes it legally
      public.
      
      Follow-up #4684
      
      @TarantoolBot document
      Title: box.tuple.is()
      ```Lua
      box.tuple.is(object)
      ```
      A function to check whether a given object is a tuple cdata
      object. Returns true or false. Never raises nor returns an error.
      adc98575
    • Vladislav Shpilevoy's avatar
      tuple: hide internal functions from box.tuple.* · b2b3fb21
      Vladislav Shpilevoy authored
      box.tuple.bless, .encode, and .is are internal. Their
      behaviour is not documented, and they may omit some checks for the
      sake of speed, and can crash if used without thinking.
      
      Nonetheless, despite they are not documented, curious users could
      notice them in box.tuple.* output via autocompletion, for example.
      And they could try to use them. This is not ok.
      
      box.tuple.bless() being called by a user leads either to a crash,
      or to a leak (because it is basically tuple reference counter
      increment).
      
      box.tuple.encode() is kind of a wrapper around msgpack, and users
      should not touch it. It may change, may be removed. And is just
      makes no sense except some rare cases in schema.lua.
      
      bless() and encode() were used in schema.lua only, so the patch
      simply moves them to box.internal.tuple.
      
      box.tuple.is() is kept as is, because
      - this is used in the tests a lot;
      - it is totally safe;
      - that function actually makes sense, and some users could have
        already started using it.
      
      There is no a test, since nothing to test - bless() is not
      available for users anymore (assuming no one is brave enough to
      rely on box.internal).
      
      Closes #4684
      b2b3fb21
    • Cyrill Gorcunov's avatar
      test/unit: add popen test · 248cb486
      Cyrill Gorcunov authored
      
      Basic test for popen engine
      
      Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      248cb486
    • Cyrill Gorcunov's avatar
      popen: handle sid on macos · f5dc5ea6
      Cyrill Gorcunov authored
      
      Due to os specifics we can't call setsid after vfork on macos
      (vfork is not longer a part of posix btw). Instead we can use
      ioctl to clear the session, then initiate a new process group.
      
      Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      f5dc5ea6
    • Cyrill Gorcunov's avatar
      popen: add logging in child process · 86ec3a5c
      Cyrill Gorcunov authored
      
      This helps to identify if something gone
      wrong inside a child process.
      
      Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      86ec3a5c
    • Cyrill Gorcunov's avatar
      popen: log errors if popen creation failed · 6d091307
      Cyrill Gorcunov authored
      
      On error path we arm diag with error but strictly
      speaking some users (such as unit tests) do not have
      to access diag for logging.
      
      Thus log it explicitly for debug sake.
      
      Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      6d091307
    • Cyrill Gorcunov's avatar
    • Cyrill Gorcunov's avatar
      popen: allow accessing environ variable · 2ca05547
      Cyrill Gorcunov authored
      
      This is part of posix standart.
      
      Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      2ca05547
Loading