Gaffer 2.0.0 Changelist
Below is a summary of changes that have been made in Gaffer version 2.0.0.
Each breaking change has been put into one of 3 tiers:
- user: end users might have to change their Gaffer queries
- admin: Gaffer admins that manage graphs might have to change their config or deployment environment
- developer: developers of Gaffer or Gaffer extensions might need to make code changes
Changes that are relevant to users are also relevant to admins and developers. Changes that are relevant to admins are also relevant to developers.
Accumulo 2 Support
The Accumulo store now supports Accumulo 2 and Hadoop 3 by default, with support for Accumulo 1 and Hadoop 2 retained. See the Accumulo Migration page for more information about this change.
Federated Store Improvements
The Federated Operation was added to greatly improve flexibility of using a Federated Store.
Breaking change | user | alpha-0.4
To migrate, please see the Federated Store Changes page.
Cache Improvements and fixes
All "caches" within Gaffer received a lot of bug fixes which should make them significantly more stable and consistent over time. This should improve usability of FederatedStores, NamedOperations and NamedViews.
Breaking change | admin | alpha-0.6
The cache will need to be reloaded, as the new internal cache interface has changed. To do this, export all of the contents of your cache, upgrade, then re-add everything manually.
Removal of Deprecated code
All of Gaffer 1's deprecated code has been removed.
Breaking change | user | alpha-0.1
To migrate, please see the deprecations page.
Dependency Upgrades
Dependencies have been updated, where possible to the latest version, removing vulnerabilities.
Breaking change | developer | alpha-0.2
You will need to migrate your dependencies to be compatible with Gaffer 2's new dependency versions. Please see the dependencies page for full details.
Federated and Proxy store fixes
A lot of bugs have been fixed that should facilitate FederatedStores with ProxyStores in them.
Breaking change | developer | alpha-0.5
The unique store trait DYNAMIC_SCHEMA
has been removed from Gaffer. Simply removing it from custom FederatedStore implementations should be an adequate fix.
Removal of CloseableIterable and CloseableIterator
The CloseableIterable
class has been removed so Operations like GetAllElements
now return an Iterable
instead, but the result still implements Closeable
.
Breaking change | developer | alpha-0.2
Everywhere CloseableIterable
was used in client code should be replaced with an Iterable
:
Note that the CloseableIterator
class has similarly been removed and any implementations will require updating.
Migration of Iterable Classes
Some Gaffer-specific Iterables and Iterators used for retrieving and manipulating data from stores have migrated from uk.gov.gchq.gaffer.commonutil.iterable
to uk.gov.gchq.koryphe.iterable
.
ChainedIterable
, ChainedIterator
, FilteredIterable
, FilteredIterator
, LimitedIterable
(previously LimitedCloseableIterable
) and LimitedIterator
have been migrated into the Koryphe repo.
Additionally, the MappedIterable
and MappedIterator
classes have been added which allow you to apply a list of functions to an iterable/iterator.
Many of the other classes remain in uk.gov.gchq.gaffer.commonutil.iterable
.
Both the WrappedCloseableIterable
and WrappedCloseableIterator
classes have been removed.
Removal of HBase and Parquet stores
The HBase and Parquet stores have been removed from Gaffer in version 2. We made posts for both the HBase and Parquet stores to understand the levels of usage. It was then decided to remove both stores as this would make introducing various improvements easier in the long term. HBase and Parquet remain available in Gaffer version 1. In the future, they could be reimplemented for Gaffer 2, though we do not plan to currently.
Breaking change | admin | alpha-0.1
We would recommend instead using an Accumulo Store. If you would like these store implementations in Gaffer 2, or any other potential store for that matter, please make an issue on GitHub.
Gaffer now builds with Java 8 and Java 11
There is now a maven profile that will swap dependency versions so you can build Gaffer with Java 11. The code has also been updated to build with both Java versions.
Accumulo Kerberos Authentication Support
The Accumulo store now supports authenticating to Accumulo and HDFS using Kerberos, in addition to username/password. For more information, see the Kerberos support page.
CSV Import and Export
Basic support for importing and exporting CSVs has been added.
All operations can now be used within NamedOperations
Previously, GetElementsBetweenSets
could not be used within a NamedOperation as it used inputB
. GetElementsBetweenSets
and inputB
have both been deprecated and instead you should use GetElementsBetweenSetsPairs
.
Example
Old operation now deprecated:
New operation that will work within NamedOperations:Ability to set OperationDeclarations during AddGraph
This will mean subgraphs added to FederatedStores can have additional operation handlers set when they are added. You can directly provide the OperationsDeclarations json to the store properties with gaffer.store.operation.declarations.json
.
Example
{
"class": "AddGraph",
"graphId": "myGraph",
"schema": {}, // (1)!
"storeProperties": {
"gaffer.store.class": "MapStore",
"gaffer.store.operation.declarations.json": {
"operations": [
{
"operation": "ImportFromLocalFile", // (2)!
"handler": {
"class": "ImportFromLocalFileHandler"
}
}
]
}
}
}
- Schema left empty for brevity
- This example operation enables file import. Read more in the CSV docs.