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
_meta
tag 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:refresh
method insteadindex:getAutoRefresh
index:setAutoRefresh
index: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:
successes
anderrors
containing, respectively, successful and failed actions
bulk:mWrite
:
- does not return a partial error if some actions fail
- returns two arrays:
successes
anderrors
containing, 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:
successes
anderrors
containing, respectively, successful and failed document writes
document:mDelete
:
- does not return a partial error if some actions fail
- returns two arrays:
successes
containing the deleted document IDs, anderrors
containing error objects
document:mGet
:
- does not return a partial error if some actions fail
- returns two arrays:
successes
containing documents content, anderrors
containing non-existing document IDs
Removed HTTP routes #
GET /:index/_list/:type
forcollection:list
- use
GET /:index/_list?type=:type
instead
- use
POST /_validateSpecifications
forcollection:validateSpecifications
- use
POST /:index/:collection/_validateSpecifications
instead
- use
POST /_getStats
forserver:getStats
- use
GET /_getStats
instead
- use
POST /:_id/_createFirstAdmin
forsecurity:createFirstAdmin
- use
POST /_createFirstAdmin/:id
instead
- use
POST /_bulk
andPOST /:index/_bulk
forbulk:import
- use
POST /:index/:collection/_bulk
instead
- 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.internalEngine
is renamed toservices.internalIndex
- key
services.db
has been renamed inservices.storageEngine
Moved keys #
services.storageEngine.dynamic
=>services.storageEngine.commonMapping.dynamic
services.storageEngine.commonMapping._kuzzle_info
=>services.storageEngine.commonMapping.properties._kuzzle_info
Changed default values #
server.protocols.socketio.enable
is nowfalse
, deactivating the Socket.io protocol by defaultservices.storage.commonMapping.dynamic
is nowfalse
by default, meaning that Elasticsearch will not infer mapping of new introduced fieldssecurity.standard.roles.default.controllers.server.actions
is now{ publicApi: true }
instead of{ info: true }
security.standard.roles.anonymous.controllers.server.actions
is now{ publicApi: true }
instead of{ info: true }
Obsolete configurations #
The following configuration keys are now obsolete and ignored:
server.entryPoints
server.protocols.socketio
server.proxy
services.garbageCollector
services.storageEngine.client.apiVersion
services.storageEngine.commonMapping.properties._kuzzle_info.deletedAt
services.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
Dsl
constructor from the plugin context is now removed, useKoncorde
instead (deprecated in 1.4.0)
Docker images #
Kuzzle #
Kuzzle images are now built for the two major versions of Kuzzle.
This includes the kuzzleio/kuzzle
production image but also the kuzzleio/plugin-dev
image for plugin developers.
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
.