Skip to content

v2025.1.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 06 Feb 08:27
· 4 commits to refs/heads/master since this release
40a3448

What’s Changed

⛓️‍💥 Breaking changes

  1. Set time travel to disabled by default @novoj (#772)
    Although time travel works on its own, we've found that it's impractical to use in production because it takes up too much disk space. These issues need to be addressed first so that this feature doesn't cause problems on production systems: #760, #421, #761
    That's why we temporarily disable this feature in the default settings.

🚀 Features

  1. Performance analysis tooling @novoj @lukashornych (#794)
    We want to extend evitaLab with a new view that would list all recent requests and queries / mutations executed within them and visualise them in a comprehensible way. This tooling will build on a new facility in evitaDB that allows to store executed queries in the file log and aggregate them with mutations in WAL and provide the tooling with an aggregated view over them.

    We know from previous experience that such tools are crucial for the development of high performance applications. Developers make many errors (often N+1 errors) that are difficult to track without such tools. When the list of all queries to the database is visible and can be traced back to a particular page/request, developers can much better reason about the problems.

  2. Implement file lock that ensures exclusive access to catalog directory @novoj (#753)
    We have first installations on K8S infrastructure that may start nodes in parallel and in wrong configurations multiple processes might attempt to access same files on the file system. We should implement file locks (https://www.baeldung.com/java-lock-files) that will prevent potential file corruptions that might result from this unfortunate situation.

  3. Make fsSync configurable @novoj (#767)
    Explicit file system synchronisation (java.io.FileDescriptor#sync) is an expensive operation that is not necessary in all scenarios. It ensures that committed data is safely written to persistent storage, but in integration testing, for example, this kind of guarantee is useless.

    The measured impact of this explicit synchronisation in a test integration suite of 1400 E2E tests heavily using evitaDB resulted in 25% better performance (shorter test suite duration), which is a significant improvement. So it's a good idea to make this fsync a configurable option, enabled by default, but able to be disabled.

  4. New artifact evita_java_driver_all_in_one introduced @novoj
    This artifact contains Java client along with all its dependencies that are repackaged, so that they won't conflict with dependencies of your project. This is primarily useful, when your project already uses gRPC libraries of different versions. Unfortunatelly this artifact is quite big due to gRPC and Armeria dependencies, so it should be used only if you can't easily solve the library conflicts.

🐛 Bug Fixes

  • Ordering referenced entities by reference attribute inside inScope container doesn't work @novoj (#789)
  • ChainIndex corrupted in consolidation @novoj (#786)
  • NullPointerException in PredecessorAttributeComparator @novoj (#781)
  • ArrayIndexOutOfBounds in MergedSortedRecordsSupplier @novoj (#780)
  • Filtering constraint attributeStartsWith doesn't work with array type attributes @novoj (#778)
  • Invalid GraphQL schema for facetGroup conjunction/negation/disjunction @lukashornych (#757)