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)