[ https://issues.apache.org/jira/browse/UNOMI-709?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kevan Jahanshahi updated UNOMI-709: ----------------------------------- Description: 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) was: 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) > 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 > > 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)