Getting track syntax error while running esrally Could not execute benchmark', TrackSyntaxError


Running esrally inside a container with -
esrally --track=geonames --target-hosts= --pipeline=benchmark-only
But getting the following error -

[ERROR] Cannot race. ('Could not execute benchmark', TrackSyntaxError('Track 'geonames' is invalid.\n\nError details: 'type' is not of type 'object'\nInstance: "type"\nPath: deque(['indices', 0, 'types', 0])\nSchema path: deque(['properties', 'indices', 'items', 'properties', 'types', 'items', 'type'])',))

NOTE: - before running this I had deleted /root/.rally/benchmarks/tracks/default. as was getting the below error
[ERROR] Cannot race. ('Could not execute benchmark', DataError('Cannot update [tracks] in [/root/.rally/benchmarks/tracks/default].',))

(Dimitrios Liappis) #2

Hi @Ronnie16,

I wasn't able to reproduce this.

I created a simple docker-compose file deploying elasticsearch and a python:3 image where I manually exec'd into to install esrally. NOTE: it's not recommended to run Rally as the root user inside the Docker image, as well as relying on the union filesystem for its ~/.rally directory.

At any rate, even with this repro-only setup, Rally started fine with a similar command to yours:

$ docker exec -ti rallydocker_python3dev_1 /bin/bash
root@a03b4a2d51c3:/# pip3 install esrally
root@a03b4a2d51c3:/# esrally configure
root@a03b4a2d51c3:/# esrally --track=geonames --target-hosts=tmpelasticsearch1:9200 --pipeline=benchmark-only

    ____        ____
   / __ \____ _/ / /_  __
  / /_/ / __ `/ / / / / /
 / _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, /

************** WARNING: A dark dungeon lies ahead of you  **************

Rally does not have control over the configuration of the benchmarked
Elasticsearch cluster.

Be aware that results may be misleading due to problems with the setup.
Rally is also not able to gather lots of metrics at all (like CPU usage
of the benchmarked cluster) or may even produce misleading metrics (like
the index size).

****** Use this pipeline only if you are aware of the tradeoffs.  ******
*************************** Watch your step! ***************************

[INFO] Racing on track [geonames], challenge [append-no-conflicts] and car ['external'] with version [6.4.2].

[INFO] Downloading data for track geonames (252.4 MB total size)                  [100.0%]
[INFO] Decompressing track data from [/root/.rally/benchmarks/data/geonames/documents-2.json.bz2] to [/root/.rally/benchmarks/data/geonames/documents-2.json] (resulting size: 3.30 GB) ... [OK]
[INFO] Preparing file offset table for [/root/.rally/benchmarks/data/geonames/documents-2.json] ... [OK]
Running delete-index                                                           [100% done]
Running create-index                                                           [100% done]
Running check-cluster-health                                                   [100% done]
Running index-append                                                           [ 75% done]

I'd try to start clean again and also ensure ~/.rally is getting executing from a bind mount (to ensure the union fs isn't slowing things down).

My docker-compose file:

version: '2'
    container_name: tmpelasticsearch1
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"
      - tmpesdata1:/usr/share/elasticsearch/data
      - 19200:9200
      - esnet1
    image: python:3
      - esnet1
    command: tail -F foo
    driver: local



The problem is I'm running esrally in such an environment where there is no access to internet . So rally cannot download benchmark data

(Daniel Mitterdorfer) #4


please see our offline usage docs.


(system) closed #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.