Breaking changes #
Table of Contents
- External dependencies
- API
- General
- Internal storage changes
- Removed errors
- Removed events
- Removed API methods
- New API methods
- Modified API Methods
- Removed HTTP routes
- Remove the CLI
- Configuration changes
- Cache changes
- Plugins
- Docker images
- Kuzzle
- Elasticsearch
External dependencies #
Dropped support for:
- Node.js versions 6 and 8
- Redis versions 3 and 4
- Elasticsearch v5
- Socket.io
- Kuzzle Proxy
New external dependencies supported versions:
- Node.js 12
- Redis 5
- Elasticsearch 7
API #
General #
- Remove permission closures (deprecated since Kuzzle 1.4.0)
- Remove the documents trashcan (deprecated since Kuzzle 1.2.0)
- Remove the
_metatag from documents and notifications (deprecated since Kuzzle 1.3.0) - Fields linked to the documents trashcan have been removed from the documents and notifications metadata :
deletedAt,active - Remove the real-time notifications about events that were about to happen (deprecated since Kuzzle 1.5.0)
- Koncorde now only accepts regular expressions compatible with the RE2 engine
Internal storage changes #
Public and plugins storages:
- collections cannot contain uppercase letters anymore
Index and collection physical storage:
The following is about how indexes and collections are physically stored in Elasticsearch. These changes aren't made visible to Kuzzle's API users:
- private indexes and collections (not directly accessible through Kuzzle's API) are now named:
%<index name>.<collection name> - public indexes and collections are now named:
&<index name>.<collection name> - indexes dedicated to plugins have their names changed from
plugin:<plugin name>toplugin-<plugin name>(transparent for plugins)
Indexes not following this naming policy cannot be accessed by Kuzzle's API.
Removed errors #
| Code | Unique name |
|---|---|
0x00010003 | core.realtime.invalid_state |
0x00040001 | core.sandbox.process_already_running |
0x00040002 | core.sandbox.timeout |
0x07050006 | security.role.invalid_rights |
0x07050007 | security.role.closure_exec_failed |
0x07050008 | security.role.closure_missing_test |
Removed events #
security:formatUserForSerialization(deprecated since v1.0.0)
New API methods #
collection:refresh: refreshes a collectioncollection:delete: deletes a collection
Removed API methods #
Index Controller
index:refresh: you should use the newcollection:refreshmethod insteadindex:getAutoRefreshindex:setAutoRefreshindex:refreshInternal
Admin Controller
admin:resetKuzzleData: this route can lead to inconsistency with the auth system in a cluster environment
Modified API Methods #
Bulk Controller
bulk:import:
- index and collection cannot be specified on each action anymore, but must be passed as global request arguments
- does not return a partial error if some actions fail
- returns two arrays:
successesanderrorscontaining, respectively, successful and failed actions
bulk:mWrite:
- does not return a partial error if some actions fail
- returns two arrays:
successesanderrorscontaining, respectively, successful and failed document writes
Collection Controller
collection:updateSpecifications:
- remove deprecated route usage on multiple collections (deprecated since 1.8.0)
collection:validateSpecifications:
- remove deprecated route usage on multiple collections (deprecated since 1.8.0)
collection:getMapping:
- returns directly the collection mappings
Document Controller
document:mCreate, document:mCreateOrReplace, document:mReplace, document:mUpdate:
- does not return a partial error if some actions fail
- returns two arrays:
successesanderrorscontaining, respectively, successful and failed document writes
document:mDelete:
- does not return a partial error if some actions fail
- returns two arrays:
successescontaining the deleted document IDs, anderrorscontaining error objects
document:mGet:
- does not return a partial error if some actions fail
- returns two arrays:
successescontaining documents content, anderrorscontaining non-existing document IDs
Removed HTTP routes #
GET /:index/_list/:typeforcollection:list- use
GET /:index/_list?type=:typeinstead
- use
POST /_validateSpecificationsforcollection:validateSpecifications- use
POST /:index/:collection/_validateSpecificationsinstead
- use
POST /_getStatsforserver:getStats- use
GET /_getStatsinstead
- use
POST /:_id/_createFirstAdminforsecurity:createFirstAdmin- use
POST /_createFirstAdmin/:idinstead
- use
POST /_bulkandPOST /:index/_bulkforbulk:import- use
POST /:index/:collection/_bulkinstead
- use
Remove the CLI #
The CLI is now independant from Kuzzle: https://github.com/kuzzleio/kuzzle-cli/
To start Kuzzle, you can run the script bin/start-kuzzle-server.
It accepts the same arguments as the kuzzle start command from the CLI.
Configuration changes #
Renamed keys #
- key
services.internalEngineis renamed toservices.internalIndex - key
services.dbhas been renamed inservices.storageEngine
Moved keys #
services.storageEngine.dynamic=>services.storageEngine.commonMapping.dynamicservices.storageEngine.commonMapping._kuzzle_info=>services.storageEngine.commonMapping.properties._kuzzle_info
Changed default values #
server.protocols.socketio.enableis nowfalse, deactivating the Socket.io protocol by defaultservices.storage.commonMapping.dynamicis nowfalseby default, meaning that Elasticsearch will not infer mapping of new introduced fieldssecurity.standard.roles.default.controllers.server.actionsis now{ publicApi: true }instead of{ info: true }security.standard.roles.anonymous.controllers.server.actionsis now{ publicApi: true }instead of{ info: true }
Obsolete configurations #
The following configuration keys are now obsolete and ignored:
server.entryPointsserver.protocols.socketioserver.proxyservices.garbageCollectorservices.storageEngine.client.apiVersionservices.storageEngine.commonMapping.properties._kuzzle_info.deletedAtservices.storageEngine.commonMapping.properties._kuzzle_info.active
Cache changes #
Authentication tokens:
Due to how Kuzzle indexes are now handled, the prefix used for authentication tokens stored in the cache has changed, from:
repos/%kuzzle/token/<kuid>#<token>
To:
repos/kuzzle/token/<kuid>#<token>
Plugins #
- Plugins manifest files are now required
Dslconstructor from the plugin context is now removed, useKoncordeinstead (deprecated in 1.4.0)
Docker images #
Kuzzle #
Kuzzle images are now built for the two major versions of Kuzzle.
The latest tag will now refer to the latest version of Kuzzle v2.
We also deploy 2 additional tags that refer respectively to the latest version of Kuzzle v1 and Kuzzle v2:
kuzzleio/<image>:1: latest Kuzzle v1 versionkuzzleio/<image>:2: latest Kuzzle v2 version
Elasticsearch #
We also provide a new preconfigured image for Elasticsearch: kuzzleio/elasticsearch:7.4.0.