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)

Reply via email to