Version 3.x - Breaking Changes
Senzing Hardware and Software Requirements Changes
Supported Operating Systems have been updated to newer versions.
Operating systems no longer supported:
-
CentOS (discontinued by RedHat)
-
RHEL 7
-
Ubuntu versions prior to 20.04
-
macOS versions prior to 11
New list of supported Operating Systems:
-
Amazon Linux 2 LTS
-
Debian 10 or newer
-
RedHat 8 (note: docker does not work properly)
-
Ubuntu 20.04 or newer
-
Windows 10 64bit (Limited Availability for OEM partners and Java/C developers)
-
macOS 11 or newer (Limited Availability for OEM partners and Java/C developers)
Supported Database connectors have been updated to newer versions.
-
Aurora PostgreSQL
-
AWS RDS
-
IBM DB2 11.1 or newer
-
Microsoft SQL Server 2019 or newer
-
MySQL 8.0.13+ or newer
-
Oracle 19c or newer
-
PostgreSQL 12 or newer
-
SQLite3
CPU requirements
Senzing 3.0 requires processors with SSE2 and AVX support. If you attempt to run on processors without it, you will get an illegal instruction/opcode error.
Senzing API Changes
Renaming of many API functions.
Many of the API functions were renamed, to make the names more standard. This includes the removal of many V2
or V3
suffixes from the function names.
These are the function renames, in the C/C++ language. The function renames are very similar for Java and Python.
-
G2_init_V2
is renamedG2_init
-
G2_initWithConfigID_V2
is renamedG2_initWithConfigID
-
G2_reinit_V2
is renamedG2_reinit
-
G2_exportJSONEntityReport_V3
is renamedG2_exportJSONEntityReport
-
G2_exportCSVEntityReport_V3
is renamedG2_exportCSVEntityReport
-
G2_fetchNext_V3
is renamedG2_fetchNext
-
G2_closeExport_V3
is renamedG2_closeExport
-
G2_findPathExcludingByEntityID
is renamedG2_findPathExcludingByEntityID_V2
-
G2_findPathExcludingByRecordID
is renamedG2_findPathExcludingByRecordID_V2
-
G2_findPathIncludingSourceByEntityID
is renamedG2_findPathIncludingSourceByEntityID_V2
-
G2_findPathIncludingSourceByRecordID
is renamedG2_findPathIncludingSourceByRecordID_V2
-
G2Hasher_init_V2
is renamedG2Hasher_init
-
G2Hasher_initWithConfig_V2
is renamedG2Hasher_initWithConfig
-
G2ConfigMgr_init_V2
is renamedG2ConfigMgr_init
-
G2Config_init_V2
is renamedG2Config_init
-
G2Config_create
is renamedG2Config_create
(same name, but different function signature) -
G2Config_load
is renamedG2Config_load
(same name, but different function signature) -
G2Config_close
is renamedG2Config_close
(same name, but different function signature) -
G2Config_listDataSources_V2
is renamedG2Config_listDataSources
-
G2Config_addDataSource_V2
is renamedG2Config_addDataSource
-
G2Config_deleteDataSource_V2
is renamedG2Config_deleteDataSource
-
G2Product_init_V2
is renamedG2Product_init
Remediation:
The remedy for these changes is to change the function names you are using, making appropriate corrections for different function signatures.
Deprecated function signatures removed.
Several API functions have been removed from the API. In most cases, another function exists with the same functionality as the previous function, but with an improved signature.
These are the functions that have been removed. The names given here are for C/C++, but they also represent similar function names in Java and Python.
-
G2_exportJSONEntityReport
(with an older function signature) -
G2_exportCSVEntityReport_V2
(with an older function signature) -
G2_fetchNext
(with an older function signature) -
G2_closeExport
(with an older function signature) -
G2Config_listDataSources
(with an older function signature, and improved output) -
G2Config_addDataSource
(with an older function signature) -
G2Config_deleteDataSource
(with an older function signature)
Many functions from the G2Config API were also removed.
Remediation:
The remedy for these changes is usually to choose a new, updated version of the function, and use that instead. (For cases where no such function exists, and something critical will be lost, please contact Senzing support.)
Java API functions renamed
Some of the API functions were renamed only in the Java API, to make the names more standard. This includes the removal of many V2
or V3
suffixes from the function names.
These are the function renames, specific to the Java language.
-
searchByAttributesV2
is renamedsearchByAttributes
-
getEntityByEntityIDV2
is renamedgetEntityByEntityID
-
getEntityByRecordIDV2
is renamedgetEntityByRecordID
-
findPathByEntityIDV2
is renamedfindPathByEntityID
-
findPathByRecordIDV2
is renamedfindPathByRecordID
-
findNetworkByEntityIDV2
is renamedfindNetworkByEntityID
-
findNetworkByRecordIDV2
is renamedfindNetworkByRecordID
-
whyEntityByRecordIDV2
is renamedwhyEntityByRecordID
-
whyEntityByEntityIDV2
is renamedwhyEntityByEntityID
-
whyRecordsV2
is renamedwhyRecords
-
whyEntitiesV2
is renamedwhyEntities
-
getRecordV2
is renamedgetRecord
Remediation:
The remedy for these changes is to change the function names you are using, making appropriate corrections for different function signatures.
G2Config API functions removed.
Several API functions have been removed from the G2Config API. These functions are no longer available for external use.
Remediation:
These functions are not intended for external use. They should be removed from your application. (If there is something critical that will be lost, please contact Senzing support.)
API flags changed from 32-bit to 64-bit values.
The integer values that represent the engine flags were changed from 32-bit to 64-bit values.
For example, the flags and bitmasks were previously defined as int
types in C/C++. They are now defined as long long
types in C/C++.
Old definition:
#define G2_EXPORT_INCLUDE_RESOLVED static_cast<int>( 1 << 0 )
New definition:
#define G2_EXPORT_INCLUDE_RESOLVED static_cast<long long>( 1LL << 0 )
Likewise, the API function calls were modified to take these longer values wherever flag values were used.
Old definition:
_DLEXPORT int G2_getEntityByEntityID_V2(const long long entityID, const int flags, char responseBuf, size_t *bufSize, void *(*resizeFunc)(void *ptr, size_t newSize));
New definition:
_DLEXPORT int G2_getEntityByEntityID_V2(const long long entityID, const long long flags, char responseBuf, size_t *bufSize, void *(*resizeFunc)(void *ptr, size_t newSize));
Remediation:
The remedy for these changes is different, depending on the programming language being used. For C/C++, the int
type variables should be changed to long long
type variables. For Java, the int
type variables should be changed to long
type variables. For Python, no changes are needed.
Document output fields were removed
The MATCH_SCORE
, REF_SCORE
, and LENS_CODE
fields were removed from JSON output documents and CSV output documents. This applies to every kind of output document, including entity information, exports, and so forth.
Remediation:
These fields should no longer be recognized or read. They should be simply removed, as there is no replacement. (If there is something critical that will be lost, please contact Senzing support.)
G2 Audit API was removed
The G2 Audit API has been removed entirely, with all of its functions.
Remediation:
The withInfo/listener framework should be used to gather information in real-time, incrementally.
We have an example risk scoring project that uses our listener framework.
Python API consolidated under the common package
The Python API classes were grouped together in a common senzing
package. This improves the interface structure and separates those primary classes from the programs and tools that use them. However, the existing import
statements in these programs and tools must be updated to reference the new API structure.
Remediation:
Any python programs or modules that use the Senzing API will need to have the import statements modified to pull from the new structure. The class usage may also change a bit.
Python API engine flags moved to G2EngineFlags class
The different engine control flags have been moved from the G2Engine class, into their own class called G2EngineFlags. This is to improve their usage as an enumeration of values.
Remediation:
Any python programs or modules that reference those flags will need to be updated to include the reference to the G2EngineFlags class.
UTYPE_CODE was changed to be USAGE_TYPE
The UTYPE_CODE
fields were altered to be USAGE_TYPE
fields in the JSON output documents and CSV output documents. This was done to standardize the names of this particular kind of value. This applies to every kind of output document including entity information, exports, and so forth.
This affects a few different specific tag names, all following the same naming conventions.
-
UTYPE_CODE
is changed toUSAGE_TYPE
-
FEAT_UTYPE_CODE
is changed toFEAT_USAGE_TYPE
-
LINKED_FEAT_UTYPE_CODE
is changed toLINKED_FEAT_USAGE_TYPE
Remediation:
Any system that reads the old tag names or column names should be updated to read the new tag names in their place. The contents of the fields will be the same.
why functions no longer return feature scoring information by default
The why
functions were altered, to no longer include feature scores, candidate keys, or disclosure keys by default. This was done to prevent the inclusion of excess information in result documents. This data is not included by default, but may be included by adding the G2_INCLUDE_FEATURE_SCORES
flag.
Remediation:
Any system that reads these data keys must add the new flag in its function calls, for the system to generate the desired data.
Workload statistics document altered and trimmed
The workload statistics document had some fields either renamed or removed.
-
records
is renamedaddedRecords
-
delete records
is renameddeletedRecords
-
grouperKeyMatch
is removed -
busyWait
is removed -
longBusyWait
is removed -
unresolveTriggers
==>prune
is removed
Remediation:
Any system that reads the old tag names should be updated to call the renamed tags by the new names (their contents have been unaltered), and to no longer call the removed tags.
Interesting Entity output JSON documents altered
The INTERESTING_ENTITIES
section of output documents has been modified in format. This is to better consolidate the data together.
-
The content of the existing
INTERESTING_ENTITIES
tag has been moved into a subtag of this field, calledENTITIES
. (INTERESTING_ENTITIES
==>ENTITIES
). -
The content of the existing
NOTICES
tag has been moved into theINTERESTING_ENTITIES
tag as a new subtag. (INTERESTING_ENTITIES
==>NOTICES
).
Remediation:
Any system that reads the old tag names should be updated to read the tags by the new names and locations (their contents have been unaltered).
XML/UMF messages are no longer supported
The engine no longer supports messages in UMF or XML format. All messages are now in JSON format.
Remediation:
Any system that uses the old UMF/XML messaging format should be updated to use JSON format messages. (This included redo/retry/repair messages in the various message queues.)
Redo/Retry/Repair messages have a changed format.
Redo messages generated by the engine have changed format. They have been converted from a UMF message to be a JSON message. They are also based primarily on RECORD_ID, rather than ENTITY_KEY.
Remediation:
All existing redo/repair/retry messages should be processed before upgrading to the new version. This will prevent any compatibility problems that may arise from using the old message format.
Configuration changes for new installs
This is a list of features that have been removed from the configuration of new installs:
-
CALL_SIGN
-
FLAG_CODE
-
GROSS_TONNAGE
-
GROUPER_KEY
-
IMO_NUM
-
MMSI_NUM
-
NET_TONNAGE
-
REG_PORT
-
SSN_LAST4
-
VEH_COLOR
-
VEH_MAKE
-
VEH_MODEL
-
VEH_YEAR
-
VESSEL_BEAM
-
VESSEL_LENGTH
-
VESSEL_TYPE
Additional items of note
This is a list of some changes to the engine behavior, that do not affect the API, but should be remembered in terms of engine behavior:
-
Scoring of Partial SSN is enabled.
-
System Parameter
[ER] FEATURE_COUNT_RERESOLVE_THRESHOLD
is now disabled by setting it to-1
, instead of0
. -
System Parameter
[ER] FEATURE_COUNT_CANDIDATE_THRESHOLD
is now disabled by setting it to-1
, instead of0
. -
System Parameter
[ER] FEATURE_SCORE_PAIR_COUNT_THRESHOLD
is now disabled by setting it to-1
, instead of0
. -
System Parameter
[ER] FEATURE_SCORE_PAIR_COUNT_REDUCE_THRESHOLD
is now disabled by setting it to-1
, instead of0
. -
The ER logging that used to be available through LOG_ER* tables has been changed to internal debug logging messages, available in the verbose output.
-
ENTITY_KEY is no longer a mappable attribute.