Mongo Elasticsearch room river failing -- Can't specify parent if no parent field has been configured
The Mongo -> Elasticsearch room river is failing with the following error
org.elasticsearch.ElasticsearchIllegalArgumentException: Can't specify parent if no parent field has been configured
http://es-01:9200/_plugin/river-mongodb/ showed import_failed
and stopping/starting had no effect.
- https://gitlab.com/gl-infra/gitter-infrastructure/blob/6ecdeb818563f44140dfb705c06f4ef3cd01fff1/ansible/roles/elasticsearch/instances/prod/files/elastic-config/mappings/room-mapping.json
- https://gitlab.com/gl-infra/gitter-infrastructure/blob/6ecdeb818563f44140dfb705c06f4ef3cd01fff1/ansible/roles/elasticsearch/instances/prod/files/elastic-config/scripts/river/room.groovy
It looks like it may be complaining about the ctx._parent
usage in room.groovy
which was added in https://gitlab.com/gl-infra/gitter-infrastructure/commit/e25220f8bb9c9103972bd21be6e4760c61364770
More of the log
$ ssh deployer@es-01
$ mkdir -p /home/deployer/delete-me-logs/ && cp /var/log/upstart/elasticsearch.log.1 /home/deployer/delete-me-logs/elasticsearch.log.1 && chown deployer /home/deployer/delete-me-logs/ elasticsearch.log.1
# Locally run,
$ mkdir -p ~/Downloads/gitter-logs && scp deployer@es-01:/home/deployer/delete-me-logs/elasticsearch.log.1 ~/Downloads/gitter-logs
# See elasticsearch.log.1
[2018-04-10 19:49:35,968][INFO ][river.mongodb.util ] setRiverStatus called with gitterRoomRiver18 - RUNNING
[2018-04-10 19:49:35,971][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] River gitterRoomRiver18 startup pending
[2018-04-10 19:49:35,972][DEBUG][discovery.zen.publish ] [es-01] received cluster state version 107
[2018-04-10 19:49:35,990][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] Starting river gitterRoomRiver18
[2018-04-10 19:49:35,990][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] MongoDB options: secondaryreadpreference [true], drop_collection [false], include_collection [], throttlesize [5000], gridfs [false], filter [null], db [gitter], collection [troupes], script [def d = ctx.document;
if(d.status == 'DELETED') {
ctx.deleted = true;
}
def groupId = d.groupId;
if(groupId != null) {
ctx._parent = groupId;
} else {
ctx._parent = 'none';
}
def sd = null;
if (d.sd) {
sd = [
type: d.sd.type,
members: d.sd.members,
admins: d.sd.admins,
public: d.sd.public,
linkPath: d.sd.linkPath,
externalId: d.sd.externalId,
internalId: d.sd.internalId,
extraMembers: d.sd.extraMembers,
extraAdmins: d.sd.extraAdmins
];
}
ctx.document = [
_id: d._id,
uri: d.uri,
topic: d.topic,
tags: d.tags,
userCount: d.userCount,
sd: sd
];
], indexing to [gitter18]/[room]
[2018-04-10 19:49:35,993][DEBUG][discovery.zen.publish ] [es-01] received cluster state version 108
[2018-04-10 19:49:35,994][INFO ][org.elasticsearch.river.mongodb.MongoConfigProvider] MongoDB version - 3.2.10
[2018-04-10 19:49:36,346][INFO ][org.elasticsearch.river.mongodb.CollectionSlurper] MongoDBRiver is beginning initial import of gitter.troupes
[2018-04-10 19:49:36,990][ERROR][org.elasticsearch.river.mongodb.MongoDBRiverBulkProcessor] afterBulk - Bulk request failed: 1 - org.elasticsearch.action.bulk.BulkRequest@5b261e33 - org.elasticsearch.ElasticsearchIllegalArgumentException: Can't specify parent if no parent field has been configured
[2018-04-10 19:49:36,990][INFO ][river.mongodb.util ] setRiverStatus called with gitterRoomRiver18 - IMPORT_FAILED
[2018-04-10 19:49:36,994][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] Closing river gitterRoomRiver18
[2018-04-10 19:49:36,995][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] Stopping river gitterRoomRiver18
[2018-04-10 19:49:36,995][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver] Stopped river gitterRoomRiver18
[2018-04-10 19:49:36,995][INFO ][org.elasticsearch.river.mongodb.Indexer] river-mongodb indexer interrupted
[2018-04-10 19:49:37,100][INFO ][org.elasticsearch.river.mongodb.CollectionSlurper] river-mongodb slurper interrupted