Giter VIP home page Giter VIP logo

iron's Introduction

Licence Build Status Maven Central Javadoc

Sonarcloud quality gate Sonarcloud lines Sonarcloud Coverage

Codacy Badge BCH compliance

NOT MAINTAINED

Iron

Iron is a Java in-memory database based on CQRS and object prevalence architecture.

iron's People

Contributors

adessaigne avatar adioss avatar cristinaionita avatar dependabot[bot] avatar fabien-rouge avatar gvauvert avatar msebire avatar near-ethic avatar plaplanche avatar rrevol avatar sdaclin avatar smendez-axway avatar sorin-marcu avatar xfournet avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iron's Issues

Replace com.amazonaws/aws-java-sdk-*:1.11.478 by software.amazon.awssdk/*:2.10.24

Version change:

<aws-java-sdk.version>1.11.478</aws-java-sdk.version>

By:

<software.amazon.awssdk>2.10.24</software.amazon.awssdk>

Dependency change:

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-kinesis</artifactId>
                <version>${aws-java-sdk.version}</version>
            </dependency>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-s3</artifactId>
                <version>${aws-java-sdk.version}</version>
            </dependency>

By:

            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>kinesis</artifactId>
                <version>${software.amazon.awssdk}</version>
            </dependency>
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>s3</artifactId>
                <version>${software.amazon.awssdk}</version>
            </dependency>

Add a maintenance mode

The new StoreManager.maintenance() method is added.
It switch the database in read only (no Command can be processed).
Queries are still working.
Once maintenance mode is effective, a snapshot is autmatically triggered.

Manage bootstrap from snapshot with no transactions yet

We may want to bootstrap a store from a snapshot at first startup, and so without the transactions related to it.

In such a case, because the transactions store is not aligned with the snapshot, the first transaction is ignored.

Store Migration should be refactored with PostProcessor approach

The trick to offer support for store migration in Iron by the means of custom client-side deserializers performing migration operations should be refactored to use client-defined post-processor approach.
Iron should invoke client-side defined post processing step after deserializing store snapshot.
Version management should be also simplified in Iron to use simple variable at store level to maintain store version (instead of older VersionPO - way).

Iron SPI file get stuck after many transactions

Description

Iron SPI file get stuck under highly concurrent access :

How to reproduce

Reproduction Steps

Actual result

  • After minutes, no more transactions are created (around 3 000 are created, but 10 000 expected) - see iron\iron\iron-spi-file-inttest\iron-store-XXX\tx
  • Never terminates

Expected result

  • Terminates after 10 000 transactions

Iron fails with multiple Unique Constraints

Reproduction Steps
Using an object definition with 2 @unique constraints (like SourcePO.class on uniqueName and secret fields)
Create a 1st entry (uniqueName = name1, secret = secret1)
Create a 2nd entry with a violation (uniqueName = name2, secret = secret1 or uniqueName = name1, secret = secret2)) -> should raise an expected error
Create a 3rd entry without violation (uniqueName = name2, secret = secret2)

Actual result
The 3rd entry creation is failing because of a supposed Unique Constraint Violation

Expected result
The 3rd entry is correctly stored

Support enumerations

Support enumerations as field types, doing the translation between "JSON strings" and "Java enumerations" declared in the models

Performance issue in FileTransactionStore

When many stores are created with a FileTransactionStore, the consumer loop keeps looking for next transaction with a Files.exist(). This IO being done every 10ms for each store, the process is quickly overloaded.

Complete multiple relations API

In order to update a multiple relation between Iron entities (add, remove etc. value in the collection), retrieval of the entire collection is needed. This collection needs to be modified and the updated collection needs to be set back in the entity attribute.

Instead of this strategy, we would like to be able to directly affect the collection by adding or removing one ore more elements.

Add support of "at least once" semantics

Some Transaction storage have a "at least once" semantics (e.g. Kinesis), duplicate transactions have to be ignored.
As transaction ids are in strict ascending order, Iron can ignore transaction which id is less or equal to the greatest processed transaction id.

Improvement of snapshot management

  • manage the 1000 objects limitation returned by listObjects
  • manage the situation of a snapshot is read during a snapshot written in progress

Iron should manage store migration

Currently, Iron does not offer any support regarding store migration. Iron clients need to deal with the natural need to have changes at store level applied.

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.