Kevan Jahanshahi created UNOMI-709:
--------------------------------------
Summary: 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
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.
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)