[
https://issues.apache.org/jira/browse/UNOMI-709?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kevan Jahanshahi updated UNOMI-709:
-----------------------------------
Fix Version/s: unomi-2.1.0
> Profile property type warn and error after migrating to unomi 2.0.0
> -------------------------------------------------------------------
>
> Key: UNOMI-709
> URL: https://issues.apache.org/jira/browse/UNOMI-709
> Project: Apache Unomi
> Issue Type: Bug
> Affects Versions: unomi-2.0.0
> Reporter: Kevan Jahanshahi
> Priority: Major
> Fix For: unomi-2.1.0
>
>
> in ticket: UNOMI-321 there is a strange implement and attempt to provide
> automatic profile properties ES mapping depending on the Unomi profile
> property type.
> Guilty commit:
> [https://github.com/apache/unomi/commit/b558f079f89a9126e22da75312ceb0c11a428f54#]
> After migrating from 1.6.x to 2.0.0 we observe warnings and errors due to
> this automatic mapping feature.
> The feature have been added to the profileService endpoint:
> in ProfileServiceImpl:
>
> {code:java}
> @Override
> public boolean setPropertyType(PropertyType property) {
> PropertyType previousProperty =
> persistenceService.load(property.getItemId(), PropertyType.class);
> boolean result = false;
> if (previousProperty == null) {
> result = persistenceService.save(property);
> propertyTypes = propertyTypes.with(property);
> } else if (merge(previousProperty, property)) {
> result = persistenceService.save(previousProperty);
> propertyTypes = propertyTypes.with(previousProperty);
> }
> persistenceService.setPropertyMapping(property, Profile.ITEM_TYPE);
> return result;
> } {code}
> ProfileServiceEndPoint:
>
> {code:java}
> /**
> * Persists the specified property type in the context server.
> *
> * TODO: move to a different class
> *
> * @param property the property type to persist
> * @return {@code true} if the property type was properly created, {@code
> false} otherwise (for example, if the property type already existed
> */
> @POST
> @Path("/properties")
> public boolean setPropertyType(PropertyType property) {
> return profileService.setPropertyType(property);
> } {code}
> Here is the warning we can observe:
> {code:java}
> 16:52:31.632 WARN [qtp1514291829-299] No predefined type found for
> property[email], no mapping will be created {code}
> In case of property type is using email type.
> Here is the Error we can face:
> {code:java}
> 16:52:32.772 ERROR [qtp1514291829-299] Internal server error Elasticsearch
> exception [type=illegal_argument_exception, reason=mapper [properties.income]
> cannot be changed from type [long] to [integer]]:
> ElasticsearchStatusException[Elasticsearch exception
> [type=illegal_argument_exception, reason=mapper [properties.income] cannot be
> changed from type [long] to [integer]]] in
> org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177)
> (Set RuntimeExceptionMapper in debug to get the full stacktrace) {code}
> Because the property *income* was mapped as long in unomi 1.6.0 but try to be
> remapped as integer in unomi 2.0.0
> This feature should try to remap existing mapped props, and also we could add
> support for email property type (ES mapping to text at least or email if ES
> have type for that)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)