Releases: FgForrest/evitaDB
v2025.1.1
What’s Changed
Minor hotfixes of glitches found on internal test implementations.
v2025.1.0
What’s Changed
⛓️💥 Breaking changes
- 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
-
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. -
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. -
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. -
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)
v2024.12.8
What’s Changed
- No changes
v2024.12.7
v2024.12.6
What’s Changed
🐛 Bug Fixes
- fix: Ordering referenced entities by reference attribute inside
inScope
container doesn't work @novoj (#791)
This graphQL query:
query productPage {
queryProduct{
recordStrip(limit: 1) {
data {
primaryKey
categories(
orderBy: {inScope: {scope: LIVE, ordering: {attributeCategoryPriorityNatural: ASC}}}
) {
referencedPrimaryKey
attributes {
categoryPriority
}
referencedEntity {
primaryKey
attributes {
code
}
}
}
}
}
}
}
... doesn't work properly. When ordering constraint is enveloped in inScope
container it's completely skipped.
Refs: #789
v2024.12.5
What’s Changed
🐛 Bug Fixes
- fix: ChainIndex corrupted in consolidation @novoj (#787)
The bug manifests itself by incorrect predecessor value inio.evitadb.index.attribute.ChainIndex#elementStates
comparing to real value stored in entity data. It seems that during consolidations predecessor of different element is stored to the state of discussed element. Unfortunatelly, the logic is quite complex and there are many cases where the state is updated with different values so it doesn't make sense to encapsulate inner map into more complex object because we'd still rely on proper inputs during updates.
Refs: #786
v2024.11.14
What’s Changed
🐛 Bug Fixes
- fix: ChainIndex corrupted in consolidation @novoj (#788)
The bug manifests itself by incorrect predecessor value inio.evitadb.index.attribute.ChainIndex#elementStates
comparing to real value stored in entity data. It seems that during consolidations predecessor of different element is stored to the state of discussed element. Unfortunatelly, the logic is quite complex and there are many cases where the state is updated with different values so it doesn't make sense to encapsulate inner map into more complex object because we'd still rely on proper inputs during updates.
Refs: #786