I've upgraded our ArcGIS Enterprise with GeoEvent 10.7.1 to 10.9.1 and now I'm seeing some strange behavior. The error I'm getting closely resembles (https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-10-9-1-date-field-type-error...) but I'm seeing some differences.
First of all, we have been running this setup since 10.3.1 without any real problems, the only changes we did this upgrade is changing the ArcGIS platform.
As soon as the upgrade was successful I started our own software that feeds GeoEvent through a REST input connector. The schema has a streamlayer with store latest as output.
I am seeing the following errors on various fields, for instance:
Inappropriate type for attribute 'Field4'. This attribute should be of type esriFieldTypeString. com.esri.arcgis.discovery.stream.ValidationException: Inappropriate type for attribute 'Field4'. This attribute should be of type esriFieldTypeString. at com.esri.arcgis.discovery.stream.StreamService.validate(StreamService.java:813) ~[!/:?] at com.esri.arcgis.discovery.stream.StreamService.publish(StreamService.java:257) ~[!/:?] at com.esri.arcgis.discovery.stream.StreamService.send(StreamService.java:939) [!/:?] at com.esri.ges.transport.streamService.StreamServiceOutboundTransport.receive(StreamServiceOutboundTransport.java:502) [!/:?] at com.esri.ges.manager.stream.internal.OutboundTransportProxy.receive(OutboundTransportProxy.java:34) [!/:?] at com.esri.ges.manager.stream.internal.OutboundStreamImpl.receive(OutboundStreamImpl.java:178) [!/:?] at com.esri.ges.adapter.OutboundAdapterBase.receive(OutboundAdapterBase.java:36) [!/:?] at com.esri.ges.adapter.json.FeatureJsonOutboundAdapter.flushQueue(FeatureJsonOutboundAdapter.java:98) [!/:?] at com.esri.ges.adapter.json.FeatureJsonOutboundAdapter.run(FeatureJsonOutboundAdapter.java:75) [!/:?] at java.lang.Thread.run(Unknown Source) [?:?]
This was actually a bit of a legacy field that's been removed from our software, but not yet on the ArcGIS side. It will never be filled, but it's a nullable string field, so what should it matter? (or so I thought)
The event will cease being processed at this point, so we're missing data in our output now.
When I add a processor to the scheme that sets a value of "foo" into the field, the error magically disappears and the record will get posted on screen and database.
This is true for all kinds of fields. Integers, Dates, Strings. When the value of the field is null, we're getting that error, but using the field name and the actual field type.
But I'm also getting other kinds of variants where the log reports "Inappropriate type for attribute 'LifeTimeStatus'. This attribute should be of type esriFieldTypeSmallInteger.".
The field is a short on the definition and a smallint in the database side. I'm getting the inappropriate type when I post the number 1 to the field.
I'm at a loss here...