Giter VIP home page Giter VIP logo

errors's Introduction

Tarantool

Actions Status Code Coverage OSS Fuzz Telegram GitHub Discussions Stack Overflow

Tarantool is an in-memory computing platform consisting of a database and an application server.

It is distributed under BSD 2-Clause terms.

Key features of the application server:

Key features of the database:

  • MessagePack data format and MessagePack based client-server protocol.
  • Two data engines: 100% in-memory with complete WAL-based persistence and an own implementation of LSM-tree, to use with large data sets.
  • Multiple index types: HASH, TREE, RTREE, BITSET.
  • Document oriented JSON path indexes.
  • Asynchronous master-master replication.
  • Synchronous quorum-based replication.
  • RAFT-based automatic leader election for the single-leader configuration.
  • Authentication and access control.
  • ANSI SQL, including views, joins, referential and check constraints.
  • Connectors for many programming languages.
  • The database is a C extension of the application server and can be turned off.

Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD (x86_64).

Tarantool is ideal for data-enriched components of scalable Web architecture: queue servers, caches, stateful Web applications.

To download and install Tarantool as a binary package for your OS or using Docker, please see the download instructions.

To build Tarantool from source, see detailed instructions in the Tarantool documentation.

To find modules, connectors and tools for Tarantool, check out our Awesome Tarantool list.

Please report bugs to our issue tracker. We also warmly welcome your feedback on the discussions page and questions on Stack Overflow.

We accept contributions via pull requests. Check out our contributing guide.

Thank you for your interest in Tarantool!

errors's People

Contributors

hustonmmmavr avatar olegrok avatar rosik avatar yngvar-antonsson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

satbek

errors's Issues

Nested/chained error API

Reason

For a better understanding of where the error occurred, it is desirable to have some kind of interface where you could get a nested error. A specific example of use can be found here tarantool/crud#186.

It will be inconvenient to catch errors if there is a high level of nesting. For example (vshard -> crud -> cartridge-java -> client-app) each of these api can throw an error, catch it and generate a new one, so it will be difficult to find out what the original error was.

Examples from other languages

The functionality of nested/chained errors is implemented in other languages:

  1. Java
catch(IOException e) {
  throw new ApplicationException("Failed on reading file soandso", e);
  //                              ^ Message                        ^ Cause
}
...
// then when we catch error, we can get cause
catch(ApplicationException e) {
  e.getCause()
  ...
}
  1. Python 3
try:
    v = {}['a']
except KeyError as e:
    raise ValueError('failed') from e

# then when we catch error, we can get cause
except ValueError as e:
    e.__cause__

Impossible to install scm version

tarantoolctl rocks install errors      
Installing http://rocks.tarantool.org/errors-scm-1.rockspec

Cloning into 'errors'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 225 (delta 11), reused 16 (delta 7), pack-reused 195
Receiving objects: 100% (225/225), 51.48 KiB | 658.00 KiB/s, done.
Resolving deltas: 100% (116/116), done.
-- Could NOT find LDOC (missing: LDOC) 
-- Configuring done
-- Generating done
-- Build files have been written to: /private/var/folders/5k/pq85j1617xn_kbndt1rhlwlr0000gp/T/luarocks_errors-scm-1-2405974/errors/build.luarocks
Install the project...
-- Install configuration: ""
-- Installing: /Projects/tdg/.rocks/share/tarantool/rocks/errors/scm-1/lua/errors
-- Installing: /Projects/tdg/.rocks/share/tarantool/rocks/errors/scm-1/lua/errors/deprecate.lua
-- Installing: /Projects/tdg/.rocks/share/tarantool/rocks/errors/scm-1/lua/errors.lua

Error: Directory 'doc' not found

Revise CI settings

  1. Set up open-source-based testing
  2. Upload rockspec to rocks.tarantool.org
  3. Remove redundant makefile spaghetti

`errors.deprecate` destroys cartridge instance

Steps to reproduce:

  1. Start cartridge, setup everything
  2. Call errors.deprecate() on any instance
  3. Voila, the instance is dead!

Responce from cartridge-cli:
⨯ Connection was closed. Probably instance process isn't running anymore

In logs:

cartridge.srv-1 | 2022-11-18 14:29:31.884 [89170] main/151/console/unix/: srv_basic.lua:10 E> DeprecationError: abc (builtin/box/console.lua:412)
cartridge.srv-1 | stack traceback:
cartridge.srv-1 |       builtin/box/console.lua:412: in function <builtin/box/console.lua:385>
cartridge.srv-1 |       [string "local function func(...) return require('cons..."]:1: in main chunk
cartridge.srv-1 |       [C]: in function 'pcall'
cartridge.srv-1 |       builtin/box/console.lua:412: in function 'eval'
cartridge.srv-1 |       builtin/box/console.lua:723: in function 'repl'
cartridge.srv-1 |       builtin/box/console.lua:895: in function <builtin/box/console.lua:881>
cartridge.srv-1 |       [C]: in function 'pcall'
cartridge.srv-1 |       builtin/socket.lua:1084: in function <builtin/socket.lua:1082>

Tarantool 2.10.3-0-g8aca8a1
Target: Darwin-x86_64-Release
Build options: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/tarantool/2.10.3 -DENABLE_BACKTRACE=ON
Compiler: /usr/bin/clang /usr/bin/clang++
C_FLAGS: -fexceptions -funwind-tables -fno-common -fopenmp -msse2 -Wformat -Wformat-security -Werror=format-security -fstack-protector-strong -fPIC -std=c11 -Wall -Wextra -Wno-strict-aliasing -Wno-char-subscripts -Wno-format-truncation -Wno-gnu-alignof-expression -Wno-cast-function-type
CXX_FLAGS: -fexceptions -funwind-tables -fno-common -fopenmp -msse2 -Wformat -Wformat-security -Werror=format-security -fstack-protector-strong -fPIC -std=c++11 -Wall -Wextra -Wno-strict-aliasing -Wno-char-subscripts -Wno-format-truncation -Wno-invalid-offsetof -Wno-gnu-alignof-expression -Wno-cast-function-type

Cartridge master

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.