GithubHelp home page GithubHelp logo

gentics / mesh Goto Github PK

View Code? Open in Web Editor NEW
573.0 26.0 116.0 306.93 MB

Gentics Mesh - The open source headless CMS for developers

Home Page: https://getmesh.io

License: Apache License 2.0

Java 98.41% JavaScript 0.14% Shell 0.05% HTML 0.04% CSS 0.40% Erlang 0.05% Dockerfile 0.07% TypeScript 0.84% Gherkin 0.01%
cms-api cms api-first graphql-api gentics-mesh headless-cms

mesh's Introduction

Gentics Mesh is your friendly, enterprise-grade, open-source headless CMS

To be honest, it’s more than that: it’s your application development platform to develop your websites, your IoT applications, your mobile apps, your smart devices and your digital signage solutions. With its best-in-class APIs, a complete feature list and great documentation, you’ll get your projects done successfully in less time, no matter which technology you prefer.


stable License Stack Overflow Join the chat at https://gitter.im/gentics/mesh Latest release CLA assistant


Quick Start

Check out our Getting Started Guide for an explanation of the basic concepts of Gentics Mesh.

Table of Contents

Introduction

Gentics CMP

Gentics CMP (Content Management Platform) is composed of the following components: Gentics CMS, Gentics Mesh, and Gentics Portal. Gentics CMS and Mesh are available as both open-source software (OSS) and Enterprise Edition (EE). Gentics Portal Java and PHP can only be acquired with the Enterprise Edition. You can find the EE features here: Open-Source and Enterprise Edition. For more information about the EE, please contact [email protected].

Here are the links to our open-source projects:

What is a Headless CMS?

Traditional CMSes are "coupled", which means that the CMS also takes care of the presentation layer responsible for delivering the content to the clients. The content and the presentation are closely interlinked. Typically, content managers create and manage their content through tools like "What you see is what you get" (WYSIWYG) editors. The CMS then delivers the content according to the front-end delivery layer built into the CMS. Typically, a traditional CMS supports your websites but not much else.

A pure headless CMS is different, because it offers no front-end capabilities at all, giving you full control of your customer experience via APIs. The CMS typically provides content managers with a presentation and channel agnostic way of managing content. It requires a front-end development team to manage the rest with the frameworks and tools they prefer: The content can be loaded by external applications which handle the content delivery to the client, meaning that the content can be (re-)used by multiple applications and channels (web, mobile app, audio guides, IOT).

Why pick Gentics Mesh?

Gentics Mesh is the platform that holds your content, gives you great APIs to access and modify it, while relieving you from handling permissions, multi-language aspects, search, and much more. You can use its modern user interface that makes content editing and administration enjoyable. At the same time, we don’t lock you in: You choose the technology and programming language you want to implement your application with. You decide whether you want to host it locally or in the cloud. We don’t care if you’re a Windows, Linux or Mac guy or girl. Also, with its Apache 2.0 license, you are free to use it, modify it and improve it.

What makes Gentics Mesh special over other headless CMSes is:

  • its built-in user management not only covers the admin and editor features, but can also be used for handling access to your application.
  • it thinks in content trees (just like websites do), which brings you many things for free: automatic navigation menus, automatic beautiful URLs, built-in link resolving, …​
  • it is scalable and clustering-friendly, so your deployment can grow with your project’s success.

Status

Gentics Mesh is actively developed by a dedicated team at Gentics Software GmbH in Vienna, Austria.

The Gentics Mesh core team consists of the following members:

Dominik Decker
UI/UX developer
Norbert Pomaroli
Software architect
Patrick Klaffenböck
Backend developer
Serhii Plyhun
Backend developer

Installation

For your first steps, please refer to the Quick Start which shows you how to run the demo application.

When you're ready to run your own CMS installation, check out our Administration Guide where you will find everything you need to know, and much more.

Features

Documentation

You can find our extensive documentation at https://www.gentics.com/mesh/docs/

Getting Help

You can chat with us via our gitter channel or create Stack Overflow questions. Issues can be reported via GitHub.

Professional Services

The company behind Gentics Mesh, Gentics Software GmbH is offering commercial services for Gentics Mesh. Please contact us at [email protected] for details.

Product Development

Gentics Mesh already has an extensive set of features, but these features can always be extended. After an extension request has been received from you, it will be evaluated whether the features will be added to the standard product or offered as an individual project.

Consulting

We accompany you in your projects with our experienced Gentics Mesh Consultants. Here we can help you setting up the project, executing together the conception of the structures in the CMS, taking into account your requirements, and offer orientation to best practices.

Maintenance

Product Maintenance includes product error removal. We offer various Product Maintenance Packages - differing between Essential, Professional and Elite Package - depending on the number of Gentics Mesh Nodes.

Support

To help and support you and your developers working and developing applications and online projects using Gentics Mesh we offer a dedicated Developer Support focusing on all the typical questions and needs arising when working with Headless CMS solutions.

Getting started developing with Gentics Mesh

Authentication

First things first: you need to authenticate, otherwise you will not be able to access your data.

You can post your credentials via JSON, use basic auth or send a JWT header - the choice is yours. If you open that URL in a browser, you will most likely authenticate using basic auth.

Using the REST API

The full REST API documentation is available at the Gentics Infoportal.

Using the GraphQL API

The data fetching GraphQL API is a part of the public REST API. The IntrospectionQuery is supported as well, so one can use a REST API tool with GraphQL support to have a code-assisted experience while writing own GraphQL queries.

An example of a GraphQL query looks as follows:

query webroot($path: String) {
  node(path: $path) {
    ... on vehicle {
      fields {
        name
        description
        vehicleImage {
          uuid
          path
          ... on vehicleImage {
            fields {
              image {
                height
                width
                dominantColor
              }
            }
          }
        }
      }
    }
  }
}
---
{
  "path": "/yachts/indian-empress"
}

Contributing to Gentics Mesh

Please read our Contributing Guidelines if you intend to contribute to the project. The guidelines will tell you the legal information, give you instructions on how to set up your IDE in order to build Gentics Mesh, and will tell you necessary knowledge to understand the codebase.

Copyright & License

Copyright (c) 2014-2025 Gentics Software GmbH. Licensed under the Apache License, Version 2.0.

Gentics is a registered trade mark of Gentics Software GmbH.

mesh's People

Contributors

jotschi avatar plyhun avatar npomaroli avatar genticsdev avatar udovidio avatar guggi avatar aschauerhuber avatar deckdom avatar yrucrem avatar mephinet avatar enizhou avatar philippguertler avatar michaelbromley avatar bernhardriegler avatar jdbranham avatar netwarex avatar karowin avatar onerandomgig avatar rhoxhaj avatar dovidio avatar patrickhoefer avatar berni2288 avatar alshain avatar dajenacuko avatar medv avatar trecloux avatar apagtxmo avatar jurbunic avatar kdima001 avatar

Stargazers

 avatar Alin Capitanescu avatar  avatar  avatar  avatar Jeroen Steggink avatar  avatar DelbertWong avatar Dagim  avatar meng zhao avatar fangs avatar S. Ali Mihandoost avatar  avatar Ben avatar 祖龙 avatar horlar avatar  avatar Taketoday avatar  avatar Daph avatar Burak ÇEKİL avatar yqy avatar MOML avatar Chuntung avatar Leo Lager avatar Price Smith avatar Daniel Sevostyanov avatar  avatar  avatar Sangkyun Yoon avatar  avatar Baltazar Troisville avatar daqi avatar Wonhong Jang avatar DehengXu avatar Steffen Wold avatar  avatar zhaoshaohai avatar AAA avatar Slava P. avatar Nikolay Angelov avatar Domagoj Poljak avatar  avatar Technetium1 avatar Mislav Skomrak avatar Jiahao Yang avatar Aref Hasan avatar lujiefsi avatar Oliver avatar sunim avatar  avatar TuNA avatar Ahn Sung-dae avatar  avatar  avatar Zeyes Lee avatar bigsml avatar Sheng Zheng avatar Abhijit Anand Prabhudan avatar Yazid Jibrel avatar Ricardo Watanabe Bento avatar Peter Guntermann avatar uzkitio avatar  avatar Manoj Baishya avatar jh avatar Aditya Rana avatar Mahmoud Rusty Abdelkader avatar 黄承开 avatar gaurav patel avatar doun avatar Malgorzata Cieslewicz avatar  avatar  avatar  avatar  avatar Entrapta Jones avatar M Peters avatar Mohamed Ragab avatar  avatar Mihaly Szlauko avatar  avatar Parsa Mihandoost avatar j2eedev avatar jatin.py avatar  avatar huangzhaorong avatar Logan King (DarkComet) avatar James Zhao avatar Ihor avatar Qiang avatar chris avatar Software Nerd avatar Harish Boke avatar  avatar  avatar Stefan Victora avatar  avatar  avatar loama avatar

Watchers

Maciej Kuś avatar  avatar Juan Vargas avatar Oskar Eiriksson avatar  avatar James Cloos avatar Ryan L. Foster avatar  avatar Pratik Parikh avatar  avatar Batayan avatar  avatar  avatar  avatar Fei Huang avatar  avatar  avatar David Rainer avatar JoggerJoel avatar Hemant Patil avatar  avatar  avatar  avatar  avatar  avatar  avatar

mesh's Issues

Enhance schema migration status endpoint

The admin/migration/status endpoint should be enhanced. It is currently not possible to get the information which migrations are currently running. Keep in mind that it is possible to invoke multiple schema migrations for different schema's.

The status should be stored in a cluster wide shared map. The following attributes should be stored and retrievable:

  • Schema/Microschema Uuid
  • Start version
  • Target version
  • Start time
  • Mesh node on which the migration is running
  • Total amount of data which needs to be migrated
  • Counter which returns the amount of data which has already been migrated

This information should also be provided locally via JMX beans.

Make versioning optional

Make versioning optional

It would be useful to make the creation of versions optional.
In some cases nodes may be updated very often and this would create a lot of versions.

Mesh Java API - Binary upload improvement

At the moment it is only possible to upload a binary by providing one buffer to the updateNodeBinaryField method.

It should also be possible to write multiple buffers and then end the request (like Vert.x).

Simplify version field of node response

Gentics Mesh Version, operating system, or hardware.

  • v0.9.16

Operating System

  • Linux
  • MacOSX
  • Windows
  • Other Unix
  • Other, name?

JVM

  • Oracle JDK 8
  • Open JDK 8

Problem

At the moment, the API for graphql and REST are different when looking at the version of a node. In graphQL a single string is returned, the version. In REST we get an object which contains the uuid of the version and the version number. I don't think it is necessary to provide the uuid since it can't be used for anything.

Reproducer

Fetch a node via REST vs a node via GraphQL with the version field.

Expected behaviour and actual behaviour

Expected both APIs to return just a string for the version. At the moment, REST returns an object as described above.

Read publish permission is not enough to read binary fields

Gentics Mesh Version, operating system, or hardware.

  • v0.9.27

Operating System

  • Linux
  • MacOSX
  • Windows

JVM

  • Oracle JDK 1.8.0_100
  • Open JDK 1.8.0_100

Problem

A user with a role that has permissions to "read published" nodes will get a "Missing permissions..." response, when trying to load binary fields from a node via the download endpoint.

{meshAPIRoot}/api/v1/{projectName}/nodes/{nodeUuid}/binary/{fieldName}

When the "Read" permission is granted, the user can access the file.

Reproducer

Expected behaviour and actual behaviour

The permission "read published" should suffice for a user/role to access all fields of a node.

version=published and version=1.0 return different results for user with readPublish permissions

Gentics Mesh Version, operating system, or hardware.

  • v0.9.14

Problem

Different results for user with readPublish permissions querying a node with version=published and version=1.0 (latest published version).

Reproducer

. create version 1.1 for node fc3c85be82584ae2bc85be82588ae2b0 (Ford GT)
. tested with user 'anonymous'
. set permissions to:

  "permissions" : {
    "create" : false,
    "read" : false,
    "update" : false,
    "delete" : false,
    "publish" : false,
    "readPublished" : true
  }

http://localhost:8080/api/v1/demo/nodes/fc3c85be82584ae2bc85be82588ae2b0 => "Missing permissions on object" => OK
http://localhost:8080/api/v1/demo/nodes/fc3c85be82584ae2bc85be82588ae2b0?version=draft => "Missing permissions on object" => OK
http://localhost:8080/api/v1/demo/nodes/fc3c85be82584ae2bc85be82588ae2b0?version=1.1 => "Missing permissions on object" => OK
http://localhost:8080/api/v1/demo/nodes/fc3c85be82584ae2bc85be82588ae2b0?version=published => node is returned => OK
http://localhost:8080/api/v1/demo/nodes/fc3c85be82584ae2bc85be82588ae2b0?version=1.0 => "Missing permissions on object" => NOK

likewise having read permissions on node fd58237c79d64bf198237c79d6bbf107 (Trabant) results in different responses for version=published and version=1.0:
(no need to change permissions or create version 1.1)

http://localhost:8080/api/v1/demo/nodes/fd58237c79d64bf198237c79d6bbf107 => node is returned => OK
http://localhost:8080/api/v1/demo/nodes/fd58237c79d64bf198237c79d6bbf107?version=1.0 => node is returned => OK
http://localhost:8080/api/v1/demo/nodes/fd58237c79d64bf198237c79d6bbf107?version=draft => node is returned => OK
http://localhost:8080/api/v1/demo/nodes/fd58237c79d64bf198237c79d6bbf107?version=published => "Missing permissions on object" => NOK

Expected behaviour and actual behaviour

behaviour for version=published and version=1.0 should be the same

Make all Java REST models fluent

Currently, none of the rest models in Java are fluent.

For instance, changing a users mail-address requires you to do this at the moment:

UserUpdateRequest request = new UserUpdateRequest();
request.setEmailAddress("[email protected]");
mclient.updateUser(userUuid, request);

Please make the API fluent, so this is possible:

mclient.updateUser(userUuid, new UserUpdateRequest().setEmailAddress("[email protected]"));

Gentics Mesh Website

  • Add landing page for executives
  • Add share links to blog
  • Upgrade Mesh Website to Gentics Mesh 0.9.x
  • Enable HTTPs on getmesh.io

Show publish and readPublished permissions only for nodes

Gentics Mesh Version, operating system, or hardware.

  • v0.9.14

Operating System

  • Linux
  • MacOSX
  • Windows
  • Other Unix
  • Other, name?

JVM

  • Oracle JDK 8
  • Open JDK 8

Problem

At the moment, all permissions are visible for all elements in Mesh. This also means that there are publish and readPublished permissions for elements where it does not make sense. For example, a user can't be published, but still has these permissions.

Reproducer

Request a user /api/v1/users/{UUID}

Expected behaviour and actual behaviour

Remove these two permissions for anything that is not a node.
Actual Response:

{
  "uuid" : "17cc209506074bbb8c20950607dbbbae",
  "creator" : {
    "uuid" : "17cc209506074bbb8c20950607dbbbae"
  },
  "created" : "2017-04-28T13:15:34Z",
  "editor" : {
    "uuid" : "17cc209506074bbb8c20950607dbbbae"
  },
  "edited" : "2017-04-28T13:15:34Z",
  "username" : "anonymous",
  "enabled" : true,
  "groups" : [ {
    "name" : "anonymous",
    "uuid" : "48468badd1064eea868badd1065eea7a"
  } ],
  "permissions" : {
    "create" : true,
    "read" : true,
    "update" : true,
    "delete" : true,
    "publish" : true,
    "readPublished" : true
  }
}

Expected response:

{
  "uuid" : "17cc209506074bbb8c20950607dbbbae",
  "creator" : {
    "uuid" : "17cc209506074bbb8c20950607dbbbae"
  },
  "created" : "2017-04-28T13:15:34Z",
  "editor" : {
    "uuid" : "17cc209506074bbb8c20950607dbbbae"
  },
  "edited" : "2017-04-28T13:15:34Z",
  "username" : "anonymous",
  "enabled" : true,
  "groups" : [ {
    "name" : "anonymous",
    "uuid" : "48468badd1064eea868badd1065eea7a"
  } ],
  "permissions" : {
    "create" : true,
    "read" : true,
    "update" : true,
    "delete" : true
  }
}

Schema export does not include schema description

Gentics Mesh Version, operating system, or hardware.

  • v0.9.17

JVM

  • Oracle JDK 8

Problem

The schema export does not export schema description into the JSON File.

Reproducer

Create a new schema and add a description. Open the schema in the JSON-Editor or export the schema via the schema export function in both cases the description of the schema is not included in the JSON (This also applies to the micro-schemas)

Expected behaviour and actual behaviour

The description of an schema or micro-schema should be included in the JSON.

Nodes disappear from search after microschema update

Gentics Mesh Version, operating system, or hardware.

  • v0.9.27

Problem

I updated a microschema which threw an exception (see below). After this all nodes which used this microschema where not available in the search. Reindexing all data also threw an exception. (see below)

Exception after microschema update:

09:41:48.986 [Dumbstruck Monferno] ERROR [vert.x-worker-thread-10] [NodeMigrationVerticle.java:345] - Migration for schema/microschema {2aeec206b6f54074aec206b6f560740c} failed with error.
com.gentics.mesh.core.rest.error.GenericRestException: 400 Bad Request Target version uuid {d8ed12dbf1724c73ad12dbf1720c7362} of microschema {2aeec206b6f54074aec206b6f560740c} could not be found. params {}
        at com.gentics.mesh.core.rest.error.Errors.error(Errors.java:85) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.core.verticle.node.NodeMigrationVerticle.lambda$null$2(NodeMigrationVerticle.java:219) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphdb.spi.Database.lambda$tx$1(Database.java:93) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphdb.OrientDBDatabase.tx(OrientDBDatabase.java:521) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphdb.spi.Database.tx(Database.java:92) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.core.verticle.node.NodeMigrationVerticle.lambda$registerMicroschemaMigration$3(NodeMigrationVerticle.java:196) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.core.eventbus.impl.HandlerRegistration.deliver(HandlerRegistration.java:212) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.core.eventbus.impl.HandlerRegistration.handle(HandlerRegistration.java:191) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.core.eventbus.impl.EventBusImpl.lambda$deliverToHandler$3(EventBusImpl.java:524) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:337) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.core.impl.TaskQueue.lambda$new$0(TaskQueue.java:60) ~[mesh-server-0.9.27.jar:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_131]

Exception when reindexing:

09:51:53.093 [Dumbstruck Monferno] ERROR [elasticsearch[Dumbstruck Monferno][listener][T#1]] [ElasticSearchProvider.java:354] - Adding object {c2cf78118db24c928
f78118db23c9264-de:node} to index failed. Duration 64[ms]
java.lang.IllegalArgumentException: mapper [fields.ancillaryExpenses] of different type, current_type [double], merged_type [long]
        at org.elasticsearch.index.mapper.FieldMapper.doMerge(FieldMapper.java:378) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.core.NumberFieldMapper.doMerge(NumberFieldMapper.java:301) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:364) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:53) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.ObjectMapper.doMerge(ObjectMapper.java:528) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.ObjectMapper.merge(ObjectMapper.java:501) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.ObjectMapper.merge(ObjectMapper.java:60) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.ObjectMapper.doMerge(ObjectMapper.java:528) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.RootObjectMapper.doMerge(RootObjectMapper.java:277) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.ObjectMapper.merge(ObjectMapper.java:501) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.object.RootObjectMapper.merge(RootObjectMapper.java:272) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.Mapping.merge(Mapping.java:112) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.index.mapper.DocumentMapper.merge(DocumentMapper.java:376) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.applyRequest(MetaDataMappingService.java:260) ~[mesh-server-0.9.27.jar:n
a]
        at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.execute(MetaDataMappingService.java:230) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.cluster.service.InternalClusterService.runTasksForExecutor(InternalClusterService.java:480) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:784) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.j
ava:231) ~[mesh-server-0.9.27.jar:na]
        at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:194)
 ~[mesh-server-0.9.27.jar:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

The same exception is thrown for also for other nodes (e.g. 535016673ab94dd09016673ab96dd0e2) and different fields (e.g. 'fields.rent')

The zipped data dir can be downloaded here: https://filebox.apa-it.at/index.php/s/ImfljjYBnRq99IA

RAML is served with no Content-Type

Gentics Mesh Version, operating system, or hardware.

  • Mesh v0.9.11
  • Linux
  • Oracle JDK 8

Problem

/api/v1/raml provides no Content-Type header (and therefore no encoding).
Chrome wrongly assumes windows-1252.

Reproducer

Expected: utf-8
Actual: windows-1252

Reproducer 2

  • curl http://localhost:8080/api/v1/raml -D - -o /dev/null -s | grep 'Content-Type'

Expected: application/x-yaml; charset=utf-8 or text/yaml; charset=utf-8
Actual: <empty>

OSS Launch

Order in micronode list gets shuffled when the list has at least 40 micronodes

Gentics Mesh Version, operating system, or hardware.

  • v0.9.18

Operating System

  • Linux

JVM

  • Open JDK 1.8.0_100

Problem

See title

Reproducer

  1. Create a node of schema that has a micronode list field
  2. Add 40 micronodes to that field, but remember the order
  3. The response of that node update is fine, but fetching the node again shows the error

Expected behaviour and actual behaviour

Expected: After getting the node I expect the order of the list to be the same as I posted it.
Actual: The order seems to be random. I could not see a pattern.

Gentics Mesh Examples

Update various examples to use the latest features

  • PHP: Add apiToken and Anonymous access example

Add Mesh UI to mesh-server

The Mesh UI is currently not part of the mesh-server jar. It should be bundled with the server as well.

Consistency Checks

We need to be able to assert the database consistency of existing mesh instances.

Fix edge cases / add missing implementation

Edge cases

  • Cross Project Content - We need to ensure that content linking is limited to a single project. Otherwise GraphQL will not work.
  • Fileupload - The file upload is currently not checking against the mimetype whilelist of the schema.
    Moving Tags - It is currently not possible to move tags in between tag families. Tag reference update will not work.
  • Node Field - The segmentField is currently not populated or checked against the schema.
  • Read with Role - Currently it is not possible to read an element using a dedicated role.
  • Number Field - The number field limits are currently not handled.
  • Schema whitelisting - This is not yet implemented for node field schema
  • Image Manipulation - Bogus query parameters must be checked and an meaningful error message must be returned.

Potential pitfalls

  • Update permissions - A admin user could potentially update his own permission set of the admin role and restrict him on updating objects.
  • Tag Conflicts - Tags are currently assigned to a tagroot. Newly created tags that have the same name will cause an error. It is therefore not possible to have two tags with the same assigned each to a different tagfamily.
  • Node Field Updates - Node field updates are not checking the permissions on the node field.
  • Node Field Read - Node fields are not checked against permissions of the user.
  • Delete node - Delete a folder which has subfolders that are read only: Undefined behavior. Missing permissions on a folder stop deletion and missing permission on a file just cause an warning. name. The field would need to be a string field. The field would need to be mandatory.
  • Node Move/Delete Folder - Node move may cause problems when moving to a folder that can be deleted.

Questions / Other

  • Tag deletion - Should tags be deleted when they are removed from the tagfamily? → TagFamilyImpl.removeTag(tag)

Possible Feature

  • Schema whitelisting - Currently it is not possible to restrict the creation of nodes in a given schema for a given parent node. A node of any schema can be created in the parent node.
  • Role creation - It would be useful to inherit permissions from an existing role when creating a new one.
  • Binary Fields in Micronodes - Currently it is not allowed to add binary fields in micronodes. We should check whether we actually want this since those fields may not be usable for webroot resolving.
  • Binary Field List - It is currently not possible to have a binary field list which holds multiple binary fields.

Done

  • Applying recursive permissions takes a long time
  • File Download - Currently it is not possible to download segments of a file. This would be very useful for video streaming. (Http 206 - Content-Range) - #533
  • Search Index Handling - The search index handling is currently iterating over all found items since document level permission are not handled within ES. See #26

Allow for additional metadata in binary fields

Check whether we want to store additional metadata properties within the binary field.

Examples:

  • Exif data
  • Location information
  • Copyright information
  • ID3 MP3 information
  • Video Metadata (Matroska etc.)

Note: Those information could also be stored by adding an additional field in the schema (alternative solution)

Refactor Demo Examples

It would be good to refactor the demo examples to use GraphQL / Auth Token.

A chapter by chapter demo example guide would also be very useful. Each chapter could be placed in a dedicated branch.

Microschema & Schema naming conflict

Gentics Mesh Version, operating system, or hardware.

  • v0.9.x

Problem

When a microschema and a regular schema share the same name, it causes conflicts in the GraphQL search and interface.

Remove NoTx

Currently a lot of transactions utilize OrientDB noTx transactions. Those transactions can potentially cause side effects. Mesh should only use regular transactions.

When calling auth/logout, Set-Cookie does not update the mesh.token cookie value

Gentics Mesh Version, operating system, or hardware.

  • v0.9.11

Operating System

  • Linux
  • MacOSX
  • Windows
  • Other Unix
  • Other, name?

JVM

  • Oracle JDK 8
  • Open JDK 8

Problem

When calling api/v1/auth/logout, the Set-Cookie header attempts to set the mesh.token cookie to "deleted", but this does not seem to work in my tests with Chrome 58.

Reproducer

  1. In the demo admin ui, clear any cookies (devtools -> Application -> cookies -> delete)
  2. Login as admin. This will return a response including the header:
Set-Cookie:mesh.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyVXVpZCI6ImM3NWM4M2U1NzExZDQ2ZDc5YzgzZTU3MTFkMTZkNzhhIiwiaWF0IjoxNDk2ODQxNjQ5LCJleHAiOjE0OTY4NDUyNDl9.jBUCFoRa-QzThDKBsWwh4CiczyqYkYmN5ue4gQiCOvA=; Max-Age=3600; Expires=Wed, 7 Jun 2017 14:20:49 GMT; Path=/
  1. Note that devtools-> Application -> cookies shows that the mesh.token cookie has been set.
  2. Log out. This calls auth.logout which should set the cookie value to "deleted" as below:
Set-Cookie:mesh.token=deleted; Max-Age=0; Expires=Wed, 7 Jun 2017 13:22:20 GMT
  1. The value of the "mesh.token" cookie remains the same as before logout, rather than being set to "deleted"

Nice URL Support

It should be possible to store a nice URL for each node. This URL can be used to serve the node with the specified path. Thus it acts similar to an alias.

We need to ensure that there are no conflicts between Nice URL's and regular Webroot URL's.

  • Tests (versioning, fallback)
  • Tests (graphql)
  • Docs
  • UI
  • Changelog
  • Implementation
  • Demo examples
  • Thirdparty support

Schema migration error handling

Error handling

When a schema is updated and an error occurs on a node migration, no error is logged.

Also the migration aborts resulting in some nodes migrated and some not. The nodes which are not migrated can't be updated by a schema update anymore.
TODO: Create an endpoint which migrates all nodes with older schema version to the most recent schema version.

It can happen that a migration fails due to webroot uniqueness checks or script errors. It must be possible to fix the script error and retry the migration.

Option A

Wait for Versioning and rollback the entire migration. This way a new migration can be executed.

Option B

Update a specific change script and execute the migration again.
Note: This may not fix errors which occur due to uniqueness checks.

Extra

It would be good to lock nodes which have been migrated by a migration that has not yet been completed. Additionally it should not be possible to create new nodes using a schema which has been created by a migration which has not yet been completed.

Enhance delete handling

Modify the current behavior:

  • DELETE /api/v1/:projectUuid/nodes/:nodeUuid
    Delete all language containers and the node itself. Throw an error if the node has children

  • DELETE /api/v1/:projectUuid/nodes/:nodeUuid/languages/en
    Delete the specified language and the node if this would be the last language of the node.
    Throw an error if the node has children

  • DELETE /api/v1/:projectUuid/nodes/:nodeUuid?recursive=true
    Delete all language containers and the node itself. Delete also children.

  • DELETE /api/v1/:projectUuid/nodes/:nodeUuid/languages/en?recursive=true
    Delete the specified language and the node if this would be the last language of the node.
    Delete also children if the node itself would be deleted.

Enhance the documentation and describe what a delete action will do.

Reduce segmentation of paths for binary fields in filesystem

The binary files are stored in subfolders which have multiple levels of subfolders. This is done to avoid one folder to be cluttered with lots of files. The current level of subfolders is a bit excessive. It would be good to reduce the amount.

A changelog migration script would need to be written which migrates those files/folders.

Reindex should not abort

The /api/v1/search/reindex call will currently stop indexing elements once an error is encountered. The index operation should not abort and just continue. Errors should be logged and returned to the user via the reindex response.

Document memory configuration

Document Gentics Mesh memory configuration.

TODO

  • Check whether elasticsearch / netty uses direct memory
  • Don't change storage.diskCache.pageSize !

Memory Settings

768 MB

java  -XX:MaxDirectMemorySize=512m -Xmx512m -Dmemory.chunk.size=256  -Dstorage.diskCache.pinnedPages=50 -Dstorage.diskCache.bufferSize=256 -jar mesh-demo-0.9.16.jar

512 MB

java  -XX:MaxDirectMemorySize=512m -Xmx256m -Dmemory.chunk.size=256  -Dstorage.diskCache.pinnedPages=50 -Dstorage.diskCache.bufferSize=256 -jar mesh-demo-0.9.16.jar  geht auch. 

320 MB

java  -XX:MaxDirectMemorySize=512m -Xmx64m -Dmemory.chunk.size=256 -Dstorage.diskCache.pinnedPages=50 -Dstorage.diskCache.bufferSize=256 -jar mesh-demo-0.9.16.jar

196 MB

java  -XX:MaxDirectMemorySize=128m -Xmx64m    -Dstorage.wal.cacheSize=20  -Dmemory.chunk.size=32 -Dstorage.diskCache.pinnedPages=50 -Dstorage.diskCache.bufferSize=128 -jar mesh-demo-0.9.16.jar 

Schema-Fieldname containing special chars causes graphql to fail

Gentics Mesh Version, operating system, or hardware.

  • v0.9.27

Problem

If a schema or microschema contains a character which is not alphanumeric (or '_') all queries to graphql fail. With the following exception

15:03:53.951 [Dumbstruck Monferno] ERROR [vert.x-eventloop-thread-4] [FailureHandler.java:91] - Error for request in path: /api/v1/kofl/graphql/?null
15:03:53.952 [Dumbstruck Monferno] ERROR [vert.x-eventloop-thread-4] [FailureHandler.java:93] - Error:
graphql.AssertException: Name must be non-null, non-empty and match [_A-Za-z][_0-9A-Za-z]*
        at graphql.Assert.assertValidName(Assert.java:35) ~[mesh-server-0.9.27.jar:na]
        at graphql.schema.GraphQLFieldDefinition.<init>(GraphQLFieldDefinition.java:35) ~[mesh-server-0.9.27.jar:na]
        at graphql.schema.GraphQLFieldDefinition$Builder.build(GraphQLFieldDefinition.java:215) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphql.type.field.FieldDefinitionProvider.createStringDef(FieldDefinitionProvider.java:173) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphql.type.field.MicronodeFieldTypeProvider.generateMicroschemaFieldType(MicronodeFieldTypeProvider.java:86) ~[mesh-server-0.9.27.
jar:na]
        at com.gentics.mesh.graphql.type.field.MicronodeFieldTypeProvider.createType(MicronodeFieldTypeProvider.java:49) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphql.type.QueryTypeProvider.getRootSchema(QueryTypeProvider.java:436) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphql.GraphQLHandler.handleQuery(GraphQLHandler.java:56) ~[mesh-server-0.9.27.jar:na]
        at com.gentics.mesh.graphql.GraphQLEndpoint.lambda$registerEndPoints$0(GraphQLEndpoint.java:50) ~[mesh-server-0.9.27.jar:na]
        at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:217) [mesh-server-0.9.27.jar:na]
        at io.v

And the following http-response body

{
  "message" : "Name must be non-null, non-empty and match [_A-Za-z][_0-9A-Za-z]*"
}

Expected behaviour

It should not be possible to add schemas or microschemas containing fieldnames with special chars. Alternatively the error message returned to the user should be more descriptive (containing the schema and fieldname where the error occurs)

Mesh sometimes takes a lot of time to shutdown

Gentics Mesh Version, operating system, or hardware.

  • v0.9.17

Operating System

  • Linux

JVM

  • Oracle JDK 8

Problem

When sending SIGINT signal to mesh, it sometimes takes more than 2 minutes for mesh to shutdown.

Reproducer

Can't be reproduced. It happens sometimes.

Here is a thread dump when it took longer.
It seems that waiting for the searchQueue is blocking the shutdown (MeshImpl.java#251).

Disconnected from the target VM, address: '127.0.0.1:34993', transport: 'socket'
Jun 29, 2017 8:37:21 AM com.orientechnologies.common.log.OLogManager log
WARNUNG: Received signal: SIGINT
Jun 29, 2017 8:37:21 AM com.orientechnologies.common.log.OLogManager log
INFORMATION: Orient Engine is shutting down...
Jun 29, 2017 8:37:21 AM com.orientechnologies.common.log.OLogManager log
INFORMATION: - shutdown storage: graphdb...
Jun 29, 2017 8:37:21 AM com.orientechnologies.common.log.OLogManager log
INFORMATION: OrientDB Engine shutdown complete
2017-06-29 08:37:21,777 [Impudent Ludicolo] INFO  [MeshImpl.java:248] - Mesh shutting down...
2017-06-29 08:39:06
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.121-b13 mixed mode):

"vert.x-internal-blocking-2" #126 prio=5 os_prio=0 tid=0x0000000002600800 nid=0x1269 waiting on condition [0x00007f12f4281000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b8240> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"Thread-0" #12 prio=5 os_prio=0 tid=0x00007f12f80eb800 nid=0x1268 in Object.wait() [0x00007f12e017e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at com.gentics.mesh.core.data.search.impl.SearchQueueImpl.blockUntilEmpty(SearchQueueImpl.java:62)
	- locked <0x00000006c81dcc90> (a java.lang.Object)
	at com.gentics.mesh.cli.MeshImpl.shutdown(MeshImpl.java:250)
	at com.gentics.mesh.cli.MeshImpl$1.run(MeshImpl.java:177)

"SIGINT handler" #125 daemon prio=9 os_prio=0 tid=0x00007f12cc021000 nid=0x1265 in Object.wait() [0x00007f12fd7ee000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Thread.join(Thread.java:1249)
	- locked <0x00000006c7400768> (a com.gentics.mesh.cli.MeshImpl$1)
	at java.lang.Thread.join(Thread.java:1323)
	at java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:106)
	at java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)
	at java.lang.Shutdown.runHooks(Shutdown.java:123)
	at java.lang.Shutdown.sequence(Shutdown.java:167)
	at java.lang.Shutdown.exit(Shutdown.java:212)
	- locked <0x00000006c72842c8> (a java.lang.Class for java.lang.Shutdown)
	at java.lang.Runtime.exit(Runtime.java:109)
	at java.lang.System.exit(System.java:971)
	at com.orientechnologies.orient.core.OSignalHandler.handle(OSignalHandler.java:69)
	at sun.misc.Signal$1.run(Signal.java:212)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-internal-blocking-1" #124 prio=5 os_prio=0 tid=0x00007f12dc07e000 nid=0xbe0 waiting on condition [0x00007f129915d000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b8240> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-internal-blocking-0" #123 prio=5 os_prio=0 tid=0x00007f12c4473800 nid=0xbdf waiting on condition [0x00007f1299561000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b8240> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][management][T#3]" #120 daemon prio=5 os_prio=0 tid=0x00007f12f0075000 nid=0x334 waiting on condition [0x00007f129885a000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21028> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:734)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.poll(LinkedTransferQueue.java:1277)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][flush][T#2]" #102 daemon prio=5 os_prio=0 tid=0x00007f124000f000 nid=0x7f81 waiting on condition [0x00007f122c6ed000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21cc8> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][index][T#4]" #100 daemon prio=5 os_prio=0 tid=0x00007f12b4b2c000 nid=0x7f7f waiting on condition [0x00007f122c8ef000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d226f8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][index][T#3]" #99 daemon prio=5 os_prio=0 tid=0x00007f12b4b5c000 nid=0x7f7e waiting on condition [0x00007f122c9f0000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d226f8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][index][T#2]" #98 daemon prio=5 os_prio=0 tid=0x00007f12b4484800 nid=0x7f7d waiting on condition [0x00007f122d8f7000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d226f8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][refresh][T#1]" #96 daemon prio=5 os_prio=0 tid=0x00007f12c445c000 nid=0x7f6a waiting on condition [0x00007f122d1f2000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21f30> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][generic][T#6]" #94 daemon prio=5 os_prio=0 tid=0x00007f1238192800 nid=0x7f68 waiting on condition [0x00007f122d3f4000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21768> (a java.util.concurrent.SynchronousQueue$TransferStack)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
	at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
	at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][index][T#1]" #92 daemon prio=5 os_prio=0 tid=0x00007f12480d5000 nid=0x7f66 waiting on condition [0x00007f122d7f6000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d226f8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-7" #90 prio=5 os_prio=0 tid=0x00007f12d800b000 nid=0x7f45 runnable [0x00007f1298a5c000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71c5dd8> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71c7e58> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71c5d40> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][listener][T#2]" #84 daemon prio=5 os_prio=0 tid=0x00007f1294016800 nid=0x7f2a waiting on condition [0x00007f122d9f8000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d20dd0> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][listener][T#1]" #83 daemon prio=5 os_prio=0 tid=0x00007f12ac005800 nid=0x7f29 waiting on condition [0x00007f122dcf9000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d20dd0> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-11" #82 prio=5 os_prio=0 tid=0x00007f12c4220000 nid=0x7f28 waiting on condition [0x00007f122ddfa000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-10" #81 prio=5 os_prio=0 tid=0x00007f12e8042000 nid=0x7f27 waiting on condition [0x00007f122defb000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-9" #80 prio=5 os_prio=0 tid=0x00007f12dc084800 nid=0x7f26 waiting on condition [0x00007f122dffc000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-8" #79 prio=5 os_prio=0 tid=0x00007f12c4324000 nid=0x7f25 waiting on condition [0x00007f124c103000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#7]" #78 daemon prio=5 os_prio=0 tid=0x00007f12e803f000 nid=0x7f24 waiting on condition [0x00007f124c204000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#6]" #77 daemon prio=5 os_prio=0 tid=0x00007f12e803d000 nid=0x7f23 waiting on condition [0x00007f124c305000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#5]" #76 daemon prio=5 os_prio=0 tid=0x00007f12e803b000 nid=0x7f22 waiting on condition [0x00007f124c406000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#4]" #75 daemon prio=5 os_prio=0 tid=0x00007f12e8039000 nid=0x7f21 waiting on condition [0x00007f124c507000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#3]" #74 daemon prio=5 os_prio=0 tid=0x00007f12e8037000 nid=0x7f20 waiting on condition [0x00007f124c608000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#2]" #73 daemon prio=5 os_prio=0 tid=0x00007f12e8036000 nid=0x7f1f waiting on condition [0x00007f124c709000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][search][T#1]" #72 daemon prio=5 os_prio=0 tid=0x00007f12e8035000 nid=0x7f1e waiting on condition [0x00007f124c80a000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7cfd418> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-7" #71 prio=5 os_prio=0 tid=0x00007f1244007000 nid=0x7f1d waiting on condition [0x00007f124c90b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-6" #70 prio=5 os_prio=0 tid=0x00007f12dc053000 nid=0x7f1c waiting on condition [0x00007f124ca0c000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-5" #69 prio=5 os_prio=0 tid=0x00007f12e8017000 nid=0x7f1b waiting on condition [0x00007f124cf0f000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-4" #68 prio=5 os_prio=0 tid=0x00007f12c416b800 nid=0x7f1a waiting on condition [0x00007f129a4f7000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-3" #66 prio=5 os_prio=0 tid=0x00007f12e800d000 nid=0x7f18 waiting on condition [0x00007f129a5f8000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-2" #64 prio=5 os_prio=0 tid=0x00007f12dc28c000 nid=0x7ec5 waiting on condition [0x00007f124cd0d000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"youtube-uploader-0" #63 prio=5 os_prio=0 tid=0x00007f12c4216800 nid=0x7ec4 waiting on condition [0x00007f124ce0e000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c93f9b78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-1" #61 prio=5 os_prio=0 tid=0x00007f12dc290800 nid=0x7ebe waiting on condition [0x00007f124d210000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][management][T#2]" #60 daemon prio=5 os_prio=0 tid=0x00007f123c032000 nid=0x7eb4 waiting on condition [0x00007f124f9b7000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21028> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:734)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.poll(LinkedTransferQueue.java:1277)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-6" #59 prio=5 os_prio=0 tid=0x00007f1316057000 nid=0x7eaa runnable [0x00007f124fcfc000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71dc2e0> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71de360> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71dc248> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-5" #58 prio=5 os_prio=0 tid=0x00007f12dc29b800 nid=0x7ea9 runnable [0x00007f124fdfd000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71c0490> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71c2510> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71c03f8> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-4" #57 prio=5 os_prio=0 tid=0x00007f1316055800 nid=0x7ea8 runnable [0x00007f124f513000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71bab60> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71bcbe0> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71baac8> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-3" #56 prio=5 os_prio=0 tid=0x00007f12d8003800 nid=0x7ea7 runnable [0x00007f124f614000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71cb720> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71cd7a0> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71cb688> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-worker-thread-0" #55 prio=5 os_prio=0 tid=0x00007f1316053800 nid=0x7ea6 waiting on condition [0x00007f124f715000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71b7fc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-2" #54 prio=5 os_prio=0 tid=0x00007f12c43d0800 nid=0x7ea5 runnable [0x00007f124f816000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71d6998> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71d8a18> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71d6900> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-acceptor-thread-0" #53 prio=5 os_prio=0 tid=0x00007f12c40ed800 nid=0x7ea3 runnable [0x00007f1298357000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71e7878> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71e98f8> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71e77e0> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-1" #52 prio=5 os_prio=0 tid=0x00007f1316051800 nid=0x7ea2 runnable [0x00007f1298458000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71d1068> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71d30e8> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71d0fd0> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][warmer][T#2]" #51 daemon prio=5 os_prio=0 tid=0x00007f12c115a800 nid=0x7ea1 waiting on condition [0x00007f1298759000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d221f8> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][fetch_shard_started][T#3]" #42 daemon prio=5 os_prio=0 tid=0x00007f1238012800 nid=0x7e90 waiting on condition [0x00007f1299662000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d22be0> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_boss][T#1]{New I/O server boss #9}" #39 daemon prio=5 os_prio=0 tid=0x00007f1316b4a800 nid=0x7e8c runnable [0x00007f1299964000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d9d6a8> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d9d6b8> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d16558> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
	at org.jboss.netty.channel.socket.nio.NioServerBoss.select(NioServerBoss.java:163)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#8]{New I/O worker #8}" #38 daemon prio=5 os_prio=0 tid=0x00007f1316b38000 nid=0x7e8b runnable [0x00007f1299a66000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d139d0> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d139c0> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d138a8> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#7]{New I/O worker #7}" #37 daemon prio=5 os_prio=0 tid=0x00007f1316b19000 nid=0x7e81 runnable [0x00007f1299b67000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d01b80> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d01b70> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d01a58> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#6]{New I/O worker #6}" #36 daemon prio=5 os_prio=0 tid=0x00007f1316afa000 nid=0x7e80 runnable [0x00007f1299c68000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d04a10> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d04a00> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d048e8> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#5]{New I/O worker #5}" #35 daemon prio=5 os_prio=0 tid=0x00007f1316adb800 nid=0x7e7f runnable [0x00007f1299d69000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d10b40> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d10b30> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d10a18> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#4]{New I/O worker #4}" #34 daemon prio=5 os_prio=0 tid=0x00007f1316a52000 nid=0x7e7e runnable [0x00007f1299e6a000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d0dcc8> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d0dcb8> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d0dba0> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#3]{New I/O worker #3}" #33 daemon prio=5 os_prio=0 tid=0x00007f1316a50800 nid=0x7e7d runnable [0x00007f1299f6b000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d032c8> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d032b8> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d031a0> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#2]{New I/O worker #2}" #32 daemon prio=5 os_prio=0 tid=0x00007f1316a4c800 nid=0x7e7c runnable [0x00007f129a06c000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d12288> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d12278> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d12160> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][http_server_worker][T#1]{New I/O worker #1}" #31 daemon prio=5 os_prio=0 tid=0x00007f1316a56800 nid=0x7e7b runnable [0x00007f129a16d000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c7d0f410> (a sun.nio.ch.Util$3)
	- locked <0x00000006c7d0f400> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c7d0f2e8> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][management][T#1]" #28 daemon prio=5 os_prio=0 tid=0x00007f1238003000 nid=0x7e78 waiting on condition [0x00007f129a6f9000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d21028> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:734)
	at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
	at java.util.concurrent.LinkedTransferQueue.poll(LinkedTransferQueue.java:1277)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][clusterService#updateTask][T#1]" #27 daemon prio=5 os_prio=0 tid=0x00007f1316a48000 nid=0x7e77 waiting on condition [0x00007f129a7fa000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d39d48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:549)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][[ttl_expire]]" #26 daemon prio=5 os_prio=0 tid=0x00007f1316a3c000 nid=0x7e76 waiting on condition [0x00007f129a8fb000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d9d250> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2163)
	at org.elasticsearch.indices.ttl.IndicesTTLService$Notifier.await(IndicesTTLService.java:341)
	at org.elasticsearch.indices.ttl.IndicesTTLService$PurgerThread.run(IndicesTTLService.java:147)

"elasticsearch[Impudent Ludicolo][scheduler][T#1]" #25 daemon prio=5 os_prio=0 tid=0x00007f13169de000 nid=0x7e75 waiting on condition [0x00007f129abfc000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c7d354d0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Impudent Ludicolo][[timer]]" #24 daemon prio=5 os_prio=0 tid=0x00007f13158c2000 nid=0x7e74 waiting on condition [0x00007f129b6fd000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at org.elasticsearch.threadpool.ThreadPool$EstimatedTimeThread.run(ThreadPool.java:747)

"threadDeathWatcher-2-1" #16 daemon prio=1 os_prio=0 tid=0x00007f12a4079800 nid=0x7e68 waiting on condition [0x00007f12f6784000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:152)
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
	at java.lang.Thread.run(Thread.java:745)

"vert.x-eventloop-thread-0" #15 prio=5 os_prio=0 tid=0x00007f1314da2800 nid=0x7e67 runnable [0x00007f12f6a85000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
	at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
	at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
	- locked <0x00000006c71e1c10> (a io.netty.channel.nio.SelectedSelectionKeySet)
	- locked <0x00000006c71e3c90> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000006c71e1b78> (a sun.nio.ch.EPollSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
	at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:746)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at java.lang.Thread.run(Thread.java:745)

"vertx-blocked-thread-checker" #13 daemon prio=5 os_prio=0 tid=0x00007f1314dc5000 nid=0x7e63 in Object.wait() [0x00007f12f77ed000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.util.TimerThread.mainLoop(Timer.java:552)
	- locked <0x00000006c7016fa0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"Service Thread" #11 daemon prio=9 os_prio=0 tid=0x00007f13140dd800 nid=0x7e53 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #10 daemon prio=9 os_prio=0 tid=0x00007f13140da800 nid=0x7e52 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #9 daemon prio=9 os_prio=0 tid=0x00007f13140d8800 nid=0x7e51 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #8 daemon prio=9 os_prio=0 tid=0x00007f13140d5800 nid=0x7e50 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Event Helper Thread" #6 daemon prio=10 os_prio=0 tid=0x00007f13140d3800 nid=0x7e4d runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f13140bf800 nid=0x7e4a waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f131408d800 nid=0x7e49 in Object.wait() [0x00007f12fdbf4000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
	- locked <0x00000006c7097b50> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f1314089000 nid=0x7e48 in Object.wait() [0x00007f12fdcf5000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
	- locked <0x00000006c7097b90> (a java.lang.ref.Reference$Lock)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=0 tid=0x00007f1314012800 nid=0x7e3a waiting on condition [0x00007f131dd1c000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c71ec530> (a java.util.concurrent.CountDownLatch$Sync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
	at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
	at com.gentics.mesh.cli.MeshImpl.dontExit(MeshImpl.java:186)
	at com.gentics.mesh.cli.MeshImpl.run(MeshImpl.java:98)
	at com.gentics.tvc.TVCRunner.run(TVCRunner.java:45)
	at com.gentics.tvc.TVCRunner.main(TVCRunner.java:52)

"VM Thread" os_prio=0 tid=0x00007f1314081000 nid=0x7e45 runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f1314028800 nid=0x7e3d runnable 

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f131402a800 nid=0x7e3e runnable 

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f131402c000 nid=0x7e3f runnable 

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f131402e000 nid=0x7e40 runnable 

"VM Periodic Task Thread" os_prio=0 tid=0x00007f13140e1000 nid=0x7e54 waiting on condition 

JNI global references: 32314

Heap
 PSYoungGen      total 1020416K, used 31024K [0x000000076d000000, 0x00000007b1d80000, 0x00000007c0000000)
  eden space 1016320K, 3% used [0x000000076d000000,0x000000076ee4c0c0,0x00000007ab080000)
  from space 4096K, 0% used [0x00000007ab080000,0x00000007ab080000,0x00000007ab480000)
  to   space 55808K, 0% used [0x00000007ae700000,0x00000007ae700000,0x00000007b1d80000)
 ParOldGen       total 301568K, used 114820K [0x00000006c7000000, 0x00000006d9680000, 0x000000076d000000)
  object space 301568K, 38% used [0x00000006c7000000,0x00000006ce021358,0x00000006d9680000)
 Metaspace       used 91347K, capacity 94581K, committed 96728K, reserved 1134592K
  class space    used 11448K, capacity 12105K, committed 12544K, reserved 1048576K

Clustering

Add clustering support

  • OrientDB clustering
  • Vert.x clustering
  • Elasticsearch clustering
  • Clustering tests - 2 PT
    • Project creation
    • Project update
    • Search index update
    • Project deletion
    • Node update
    • Permission update and change distribution
    • Node creation
    • Node publishing
  • Documentation - 0.5 PT

Monitoring

Idea

Add means to track response times and provide a way to generate reports.
It would be good to write this in a tool agnostic way. So that multiple monitoring tools could be added.

Examples

prometheus vertx client

Metrics

  • Transaction retries
  • Transaction errors
  • Pending jobs
  • Failed jobs
  • Schema/Microschema/Branch migration metrics
  • Cluster status information
  • Cluster node count
  • Uptime
  • Java Metrics (Heap, etc)
  • ES Status (Errors, Pending commands)

  • count 200er requests
  • count 500er request
  • count 201er ...
  • count user
  • count tags
  • count nodes
  • count transaction timeouts
  • count transaction retrys
  • monitor Elasticsearch stats
  • monitor OrientDB stats
  • monitor JMX Beans: Threads (count) (e.g.: vert.x, es, orientdb) , Heap size, GCs

Additional

  • Liveness probe: /api/v1/health/live
  • Readiness probe: /api/v1/health/ready

Upgrade to Elasticsearch 6.x

We currently use Elasticsearch 2.4.x

I have already evaluated the upgrade within the dev-versioning-es5 branch.
It turns out that the batch delete handling would need to be rewritten. Various API's have changed.

Add option to configure raw index per field

Problem

raw fields are limited to 32k bytes in size. See https://stackoverflow.com/questions/24019868/utf8-encoding-is-longer-than-the-max-length-32766 for more details.

This limit affects string and html fields.

Solution

We need to add a field schema property which can be used to configure whether the raw field should be index or not. This can be handled within NodeContainerTransformator#304. The schema diff logic and tests must also be enhanced to handle this case.

A check needs to be added to detected length violations before storing the node in the graph database.

Reindex creates bogus indices

Problem

Assuming that a NGFC has not yet been migrated and is linked to an older schema container version. This schema container version is not linked to the branch.

The reindex operation will process this container and store it in an index although the index will never be used by mesh.

The main problem is that ES will implicitly create an empty index and store the documents in that index. No mapping will be created and thus various merge errors can happen.

Expected behaviour and actual behaviour

The reindex operation should ignore those elements and not handle them. A warning or debug message should perhaps be logged.

Publishing error due to missing parent node language

We need to add testcase for the following situation:

Publish the node "Deutsch" using POST /api/v1/nodes/:DeutschUuid/published?lang=de
The node Deutsch has a parent Node English which only contains an english field container.

The assertPublishConsistency check is currently failing because the fallback check tries to assert that the node English also contains a german field container which is published.

Improve read performance

Target PI: 500ms - includes 1 Node request or 1 search request & 1 nav root request & 1 children request or 1 search

SSO Provider

Check whether it is viable to use Gentics Mesh as a SSO provider.

Migration from node list to micronode list does nothing

Gentics Mesh Version, operating system, or hardware.

  • v0.9.18

Operating System

  • Linux

JVM

  • Open JDK 1.8.0_100

Problem

See title

Reproducer

  1. Create a schema with a node list field.
  2. Change that field to a micronode list field.

Expected behaviour and actual behaviour

Expected: OK Response and field changed to micronode list field.
Actual: OK Response and field has NOT changed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.