Getting IllegalStateException: executor not accepting a task while running Gatling tests - docker

While executing my gatling based load tests which are written in scala
My test Scenario is as below
val myscenario = scenario("my operation")
.feed(idFeeder)
.exec(create("${objectId}"))
.pause(120)
.exec(poll("${objectId}"))
.exec(getObject("${objectId}"))
I am getting the below exception
java.lang.IllegalStateException: executor not accepting a task
at io.netty.resolver.AddressResolverGroup.getResolver(AddressResolverGroup.java:61)
P.S : These tests are running from inside a docker container.
The docker container exits with below status
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-09-04T13:49:21.427097254Z",
"FinishedAt": "2022-09-04T13:50:29.196243767Z"
}
It appears to me that docker is causing gatling to exit without making in fire the desired number of requests
Could someone please help me understand this behavior and suggest solution for the same .

Related

ECS TaskDefinition volumesFrom does not appear to share ECS volume [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 15 hours ago.
Improve this question
I have two docker containers.
Docker container A: Runs an application and nginx.
nginx outputs logs to /var/logs/nginx/
app outputs logs to /var/logs/app/
Docker container B is a cloudwatch-agent this is defined as a "side car" container wihtin the same task def as container A.
I am trying to use "volumesFrom" to mount the local volume of app with cloudwatch.
"volumesFrom": [
{
"ReadOnly" : true,
"SourceContainer": "app"
}
],
However the CloudWatch agent container cannot seem to find the logs I have configured it to look for. (It does deploy successfully)
{
"name": "cloudwatch-agent",
"image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest",
"environment": [
{
"name": "CW_CONFIG_CONTENT",
"value": "{\"logs\": { \"logs_collected\": { \"files\": { \"collect_list\": [ { \"file_path\": \"/var/log/nginx/access.log\", \"log_group_name\": \"/drupal/nginx-access\", \"log_stream_name\": \"ecs\"}]}}}}"
}
],
"volumesFrom": [
{
"ReadOnly" : true,
"SourceContainer": "drupal"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "True",
"awslogs-group": "/ecs/ecs-cwagent-fargate",
"awslogs-region": "${region}",
"awslogs-stream-prefix": "ecs"
}
}
}]
What am I doing wrong?

How to provide a valid crumb in ansible jenkins_script module

I am using Ansible to check the status of several jenkins servers. The playbook that I have created checks the disk space, uptime, and jenkins version perfectly fine. However, I tried to add a task that prints out a list of the installed jenkins plugins for each server by using the jenkins_Script module and keep receiving a '403' error message.
Playbook:
- name: Obtaining a list of Jenkins Plugins
jenkins_script:
script: 'println(Jenkins.instance.pluginManager.plugins)'
url: 'http://server.com:8080/'
user: '*****'
password: '*****'
Output:
fatal: [server]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_args": {
"args": null,
"force_basic_auth": true,
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"script": "println(Jenkins.instance.pluginManager.plugins)",
"url": "http://server.com:8080/",
"url_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"url_username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"user": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"validate_certs": true
}
},
"msg": "HTTP error 403 HTTP Error 403: No valid crumb was included in the request"
}
-- I believe I have narrowed down the issue - It looks like I wasn't providing a crumb. I have since generated the crumb, but there is no 'crumb' arguement for the jenkins_script module. Does anyone know how to successfully provide a crumb?
Will gladly clarify anything stated above if needed, and any assistance is greatly appreciated.
https://github.com/ansible/ansible/pull/20207
-- if you're on ansible 2.3 the changes have already been committed all you have to do is make sure 'cross site request forgery' is enabled on the jenkins servers. (Manage jenkins > Configure Global security)

Change DigitalOcean access token for docker-machine

I created a host using the DigitalOcean driver. However, I had to generate a new access token and am now unable to connect to it. How do I reconfigure docker-machine to use the new access token?
Each host spun up with docker-machine creates a folder holding its configuration under ~/.docker/machine/machines/ The DigitalOcean access token and other information about the droplet are stored in a config.json file. Let's look at a specific one as an example:
$ cat ~/.docker/machine/machines/docker-001/config.json | jq .
{
"DriverName": "digitalocean",
"Driver": {
"AccessToken": "9dasd89ssf6542notarealtoken455b44sdgf4685",
"DropletID": 4906043,
"DropletName": "",
"Image": "ubuntu-14-04-x64",
"MachineName": "docker-001",
"IPAddress": "45.32.128.70",
"Region": "nyc3",
"SSHKeyID": 7697371,
"Size": "512mb",
"CaCertPath": "/home/asb/.docker/machine/certs/ca.pem",
"PrivateKeyPath": "/home/asb/.docker/machine/certs/ca-key.pem",
"DriverKeyPath": "",
"SwarmMaster": false,
"SwarmHost": "tcp://0.0.0.0:3376",
"SwarmDiscovery": ""
},
"CaCertPath": "/home/asb/.docker/machine/certs/ca.pem",
"ServerCertPath": "",
"ServerKeyPath": "",
"PrivateKeyPath": "/home/asb/.docker/machine/certs/ca-key.pem",
"ClientCertPath": "",
"SwarmMaster": false,
"SwarmHost": "tcp://0.0.0.0:3376",
"SwarmDiscovery": ""
}

Any API or Web UI project to manage a Docker private registry?

I can't find how to manage images in a private registry. I can push or pull an image because i know the id but how to get the list of pushed images ?
Take for example a person who wants to see the available images under the private registry of his organization. How can she do ?
Unless I'm mistaken, I can't find API or Web UI to discover the registry content like the index.docker.io do with the public registry.
Are there any open source projects to manage this ?
thanks.
Are there any open source projects to manage this ?
There is a containerized web application that provides administration of one-to-many private registries. Its name is Docker Registry UI and it is FOSS.
The source is on Github and you can run it in a container like so:
docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui
Disclaimer: I wrote the web-app as I could not find one myself. I believe this answers your question (as quoted).
Thanks Thomas !
To allow the use of the search API, you must start the container by specifying the value of the environment variable SEARCH_BACKEND like this :
docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry
Then i have a result for this query :
GET http://registry_host:5000/v1/search?q=base
Result :
{
"num_results": 1,
"query": "base",
"results": [{"description": "", "name": "test/base-img"}]
}
To list all images, you can do this :
GET http://registry_host:5000/v1/search
Result :
{
"num_results": 2,
"query": "",
"results": [
{"description": "", "name": "test/base-img"},
{"description": "", "name": "test/base-test"}]
}
And to know the available versions of an image :
GET http://localhost:5000/v1/repositories/**test/base-img**/tags
Result :
{
"0.1": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
"0.2": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
"0.3": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13"
}
I've written a docker-registry-frontend that you can find on github. It allows you to browse your private registry and do almost everything that is available through the Docker registry API v1. Plus, it can be run as a docker container on its own.
Here's a list of basic features with some screenshots: https://github.com/kwk/docker-registry-frontend/wiki/Features. In addition to these features, there's support for SSL encryption and Kerberos authentication.
I want to present for you, my frontend for private registry, you may try it from github or dockerhub.
Also you can find interface screenshots there.
To sum up it has:
- internal db (BoltBD) gives it ability to store info, and as result it responses much more faster then after direct api call like in other projects
- app can pars, store and show info from registry such as:
- image layers info:
- name / tag
- image size and pushes number
- upload and push dates
- image creating commands history
- it is possible to set multiple repositories in case you have more than one registries and observe them in one place
- show statistics pretty, draw curves for uploads number and image sizes for tag with respects to dates
Update 2017-02-15
So far also there was added:
find a parent
show tree-graph of parents
image deletion
Bearer token auth support
As far as I see, the Docker registry has a REST API, very similar to Docker itself. You can find the documentation at http://docs.docker.io/reference/api/registry_api/. But on the first glance I don't see a method to just list all images.
There is also an REST API for the official index (infos at http://docs.docker.io/reference/api/docker-io_api/).
EDIT
I just tested the Docker registry API and it is not so self-explanatory. You can query all images of a certain repository. In my case, my repository is called "thomas/busybox". I can query all images in there by calling:
https://my-private-registry.com/v1/repositories/thomas/busybox/images
Result:
[
{
"id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739"
},
{
"id": "6c991eb934609424f761d3d0a7c79f4f72b76db286aa02e617659ac116aa7758"
},
{
"id": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a"
},
{
"id": "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158"
}
]
Now I know that I have four images in my repository and I can query every image. The query for the first image would be:
https://my-private-registry.com/v1/images/2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739/json
Result:
{
"id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739",
"parent": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
"created": "2014-04-24T15:59:59.47081913Z",
"container": "d15320d6935ca35bc4198e373f29e730f4c53cce32b3809c2fecec22eb30018b",
"container_config": {
"Hostname": "4964db5b599b",
...
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"HOME=\/",
"PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
],
"Cmd": [
"\/bin\/sh",
"-c",
"#(nop) CMD [\/bin\/sh -c \/bin\/sh]"
],
"Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
...
"OnBuild": [
]
},
"docker_version": "0.10.0",
"author": "J\u00c3\u00a9r\u00c3\u00b4me Petazzoni <jerome#docker.com>",
"config": {
"Hostname": "4964db5b599b",
"Domainname": "",
"User": "",
"Memory": 0,
...
"Env": [
"HOME=\/",
"PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
],
"Cmd": [
"\/bin\/sh",
"-c",
"\/bin\/sh"
],
"Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
...
"OnBuild": [
]
},
"architecture": "amd64",
"os": "linux",
"Size": 0
}
You can also search for an image, but I do not get any results:
https://my-private-registry.com/v1/search?q=thomas
Result:
{"num_results": 0, "query": "thomas", "results": []}
Sonatype Nexus Repository Manager 3.0 has Private Registry for Docker

Selenium failing with EOFile error with chromedriver on linux

I have an automated build machine running cucumber tests on an EC2 instance. I am using:
capybara (1.1.4)
selenium-webdriver (2.31.0)
chromedriver (25.0.1364.172-187217)
The tests are run headless using Xvfb X11 Server (1.7.7-29.10.amzn1) This setup has been working fine for months, but last week stopped working on these machines.
The error I am getting is:
(::) failed steps (::)
end of file reached (EOFError)
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/protocol.rb:135:in `read_nonblock'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/protocol.rb:135:in `rbuf_fill'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/protocol.rb:126:in `readline'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:2219:in `read_status_line'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:2208:in `read_new'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:1191:in `transport_request'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:1177:in `request'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:1170:in `block in request'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:627:in `start'
/mnt/bamboo-ebs/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:1168:in `request'
./features/step_definitions/web_steps.rb:49:in `/^(?:|I )go to (.+)$/'
My best guess is the problem is due to upgrades to the selenium or chromedriver libraries in the past month as these are updated whenever a build instance is started.
I have checked the chromedriver logs but they do not appear to offer anything helpful:
0.000][INFO]: ChromeDriver 23.0.1240.0 /mnt/bamboo-ebs/bin/chromedriver/chromedriver
[0.259][FINE]: Initializing session with capabilities {
"browserName": "chrome",
"chrome.detach": true,
"chromeOptions": {
"detach": true
},
"cssSelectorsEnabled": true,
"javascriptEnabled": true,
"nativeEvents": false,
"platform": "ANY",
"rotatable": false,
"takesScreenshot": false,
"version": ""
}
[0.259][INFO]: Using named testing interface
[0.676][INFO]: Connected to Chrome successfully. Version: 25.0.1364.172
[0.693][FINE]: Command received (/session/132be881788b1e7a6c878f4c45935176)
[0.693][FINE]: Command finished (/session/132be881788b1e7a6c878f4c45935176) with response {
"sessionId": "132be881788b1e7a6c878f4c45935176",
"status": 0,
"value": {
"acceptSslCerts": false,
"applicationCacheEnabled": false,
"browserConnectionEnabled": false,
"browserName": "chrome",
"chrome.chromedriverVersion": "23.0.1240.0",
"chrome.nativeEvents": false,
"cssSelectorsEnabled": true,
"databaseEnabled": false,
"handlesAlerts": true,
"javascriptEnabled": true,
"locationContextEnabled": false,
"nativeEvents": true,
"platform": "linux",
"rotatable": false,
"takesScreenshot": true,
"version": "25.0.1364.172",
"webStorageEnabled": true
}
}
[0.695][FINE]: Command received (/session/132be881788b1e7a6c878f4c45935176/url) with params {
"url": "http://127.0.0.1:31337/"
}
[0.695][FINER]: Waiting for all views to stop loading...
[0.696][FINER]: Done waiting for all views to stop loading
[0.716][FINER]: Waiting for all views to stop loading...
All tests work successfully on my development machine (Mac OSX Mountain Lion) with chromedriver (26.0.1383.0). I have tried to downgrade my chromedriver to match the version on my build machine, but found I could not do this.
I have managed to get the tests to run using firefox, but this is not a long term solution for us.
Any help would be much appreciated.

Resources