Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regular performance tests #439

Merged
merged 740 commits into from
Jan 25, 2024
Merged

Regular performance tests #439

merged 740 commits into from
Jan 25, 2024

Conversation

novoj
Copy link
Collaborator

@novoj novoj commented Jan 25, 2024

No description provided.

novoj and others added 30 commits December 5, 2023 13:17
Former implementation allowed to create reference targeting non-existing evitaDB entity type.
…erence-targetting-non-existing-evitadb-entity-type

fix(#162): add validation for managed entity references
…o recommendations, added support for C# DocumentationProfile setting
Reworked original implementation which broke a lot of tests and I'm afraid it would break current clients as well. I think we need to postpone validation and allow multiple schemas to be defined in bulk to avoid unnecessary complexity on the client side while maintaining model consistency.

Current use case:

Product -> References Category
category -> references products (related products specified at category level)

It's a circular dependency, but it's a real use case that we need to support. The only situation to avoid the exception would be

1. create category
2. create product that references category
3. change category to reference related products

This requires quite complicated setup on the client side, which now uses the `ClassAnalyzer` facility to set up the schema.

So a new suggestion would be to validate the schema not in the mutation, but at the end of the updateSchema method. In `io.evitadb.core.EvitaSession#updateCatalogSchema` method the validation will be done after all mutations have been processed. This would allow to set up circular dependent updates in one go and still pass the validation.
Cleaning - two interfaces joined together.
This allows to define multiple entity schemas at once before sending them to evitaDB server.
This allows to define multiple entity schemas at once before sending them to evitaDB server.
# Conflicts:
#	evita_api/src/main/java/io/evitadb/api/requestResponse/schema/dto/CatalogSchema.java
#	evita_api/src/main/java/io/evitadb/api/requestResponse/schema/mutation/attribute/CreateGlobalAttributeSchemaMutation.java
…e-specific-index

#316 globaly unique but language specific index
novoj and others added 29 commits January 17, 2024 16:13
…nSet` and `priceInPriceLists` empty vararg argument

Now, if you pass empty array the query returns no results instead of eliminating the entire constraint, which would produce entire entity list. The constraint is still eliminated if NULL is passed into the constraint in the place of the var-arg argument.
…with exception

Method with signature:

```java
/**
     * Removes the tag reference if it exists.
     * @param tagId tag id to be removed
     * @return true if the tag was removed, false if it did not exist
     */
    @ReferenceRef(WithPublishedTags.REFERENCE_TAG)
    @RemoveWhenExists
    boolean removeTagById(int tagId);
```

Throws exception when invoked:

```
ERROR Failed to index entity eG_cym-group in catalog milagro_cz due to: Failed to wrap `SealedEntity` into class `boolean` due to: Failed to wrap `SealedEntity` into class `boolean` due to: Cannot find any constructor with matching arguments in class: `boolean`
io.evitadb.api.exception.EntityClassInvalidException: Failed to wrap `SealedEntity` into class `boolean` due to: Failed to wrap `SealedEntity` into class `boolean` due to: Cannot find any constructor with matching arguments in class: `boolean`
	at io.evitadb.api.proxy.impl.ProxycianFactory.createReferenceProxy(ProxycianFactory.java:344) ~[evita_api-10.2.0.jar:?]
	at io.evitadb.api.proxy.impl.ProxycianFactory.createEntityReferenceProxy(ProxycianFactory.java:186) ~[evita_api-10.2.0.jar:?]
	at io.evitadb.api.proxy.impl.AbstractEntityProxyState.lambda$getOrCreateEntityReferenceProxy$7(AbstractEntityProxyState.java:401) ~[evita_api-10.2.0.jar:?]
	at io.evitadb.api.proxy.impl.AbstractEntityProxyState.lambda$getOrCreateEntityReferenceProxy$8(AbstractEntityProxyState.java:410) ~[evita_api-10.2.0.jar:?]
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[?:?]
	at io.evitadb.api.proxy.impl.AbstractEntityProxyState.getOrCreateEntityReferenceProxy(AbstractEntityProxyState.java:408) ~[evita_api-10.2.0.jar:?]
	at io.evitadb.api.proxy.impl.SealedEntityProxyState.getOrCreateEntityReferenceProxy(SealedEntityProxyState.java:67) ~[evita_api-10.2.0.jar:?]
	at io.evitadb.api.proxy.impl.entityBuilder.SetReferenceMethodClassifier.lambda$removeReferencedEntityIdWithReferenceResult$55(SetReferenceMethodClassifier.java:1606) ~[evita_api-10.2.0.jar:?]
	at one.edee.oss.proxycian.bytebuddy.ByteBuddyDispatcherInvocationHandler.interceptMethodCall(ByteBuddyDispatcherInvocationHandler.java:94) ~[proxycian_bytebuddy-1.3.10.jar:?]
	at one.edee.oss.proxycian.bytebuddy.ByteBuddyDispatcherInvocationHandler.interceptMethodCall(ByteBuddyDispatcherInvocationHandler.java:46) ~[proxycian_bytebuddy-1.3.10.jar:?]
	at one.edee.oss.proxycian.bytebuddy.generated.PublishedGroupEditor_365.removeTagById(Unknown Source) ~[proxycian_bytebuddy-1.3.10.jar:?]
```
…hat-returns-boolean-result-ends-with-exception

fix(#425): Removing reference by id that returns boolean result ends …
…B server version

We need to provide sever version in gRPC evitaLab API, so then the clients can visualize it and reason about it. We should also provide a method to detect the client version. Java client should log an error/warning if its minor version differs from the server version, as it might signal compatibility problems.

Implemented the gRPC part and the compatibility check.
…B server version

We need to provide sever version in gRPC evitaLab API, so then the clients can visualize it and reason about it. We should also provide a method to detect the client version. Java client should log an error/warning if its minor version differs from the server version, as it might signal compatibility problems.

Implemented system endpoint.
…vide-information-about-evitadb-server-version

feat(#406): System / gRPC API should provide information about evitaDB server version
…B server version

Support for accessing client version via API.
…-query-if-empty

# Conflicts:
#	evita_query/src/main/java/io/evitadb/api/query/parser/grammar/EvitaQLParser.java
…is-removed-from-query-if-empty

feat(#413): AttributeInSet constraint is removed from query if empty
…stogram-buckets

# Conflicts:
#	documentation/user/en/query/requirements/examples/histogram/attribute-histogram.evitaql.json.md
#	documentation/user/en/query/requirements/examples/histogram/attribute-histogram.graphql
#	documentation/user/en/query/requirements/examples/histogram/attribute-histogram.graphql.json.md
#	documentation/user/en/query/requirements/examples/histogram/price-histogram.evitaql.json.md
#	documentation/user/en/query/requirements/examples/histogram/price-histogram.graphql
#	documentation/user/en/query/requirements/examples/histogram/price-histogram.graphql.json.md
…roperty-from-histogram-buckets

feat(#420): remove unnecessary index property from histogram buckets
…rsioning

build(#432): switch from SemVer schema to CalVer schema
I have method declaration:

```java
@ReferenceRef(REFERENCE_PARAMETER_VALUES)
@CreateWhenMissing
void addOrUpdateParameterValue(
        int parameterValueId,
        @nonnull Consumer<PublishedProductParameterValueEditor> parameterValueConsumer
) throws ContextMissingException;
```

And after calling this method the reference is not created and updated.
…ails-to-add-reference-to-an-entity

fix(#435): OEM proxy implementation fails to add reference to an entity
…-ls-in-docs

docs: replace deprecated LanguageSpecific compontent with the new LS component
The field was not necessarily needed and it can be cleanly worked around without breaking other drivers (such as C#).
@novoj novoj merged commit 6457583 into performance Jan 25, 2024
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants