103 lines
3.2 KiB
Markdown
103 lines
3.2 KiB
Markdown
---
|
|
title: Troubleshooting
|
|
---
|
|
|
|
## Tests
|
|
|
|
### Connection timeout
|
|
|
|
While running test cases, if you get an error message
|
|
`postgresql connection timeout`, please re-run the tests by increasing the
|
|
statement timeout, for example:
|
|
|
|
```shell
|
|
STATEMENT_TIMEOUT=10000 bundle exec rspec
|
|
```
|
|
|
|
## PostgreSQL
|
|
|
|
### How do I fix the Error `role "ec2-user" does not exist` on an AWS instance?
|
|
|
|
After installing and configuring PostgreSQL on an AWS EC2 (or AWS Cloud9)
|
|
instance and running `bin/setup`, this error could occur.
|
|
|
|
To fix it, run the following two commands in a terminal (assuming your
|
|
PostgreSQL user is named **postgres**):
|
|
|
|
```
|
|
sudo -u postgres createuser -s ec2-user
|
|
sudo -u postgres createdb ec2-user
|
|
```
|
|
|
|
The first command creates the user **ec2-user** and the second one creates the
|
|
database for this user because every user needs its database. Even if the first
|
|
command fails, run the second command to create the missing database.
|
|
|
|
## Elasticsearch
|
|
|
|
### Index read-only error
|
|
|
|
If you encounter an error similar to the following:
|
|
|
|
```shell
|
|
{"error":{"root_cause":[{"type":"cluster_block_exception","reason":"index [tags_development] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"}],"type":"cluster_block_exception","reason":"index [tags_development] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"},"status":403}
|
|
```
|
|
|
|
it means that Elasticsearch went into read only mode because its disk allocator
|
|
noticed how the disk drive is nearly full:
|
|
|
|
> Elasticsearch enforces a read-only index block
|
|
> (`index.blocks.read_only_allow_delete`) on every index that has one or more
|
|
> shards allocated on the node that has at least one disk exceeding the flood
|
|
> stage.
|
|
|
|
This is an indication that you might not have enough space for ES to work
|
|
correctly.
|
|
|
|
If you want to disable the threshold check on your local machine you can open a
|
|
Rails console (with `rails console`) and issue the following command:
|
|
|
|
```ruby
|
|
Search::Client.cluster.put_settings(body: {
|
|
persistent: {
|
|
"cluster.routing.allocation.disk.threshold_enabled" => false,
|
|
}
|
|
})
|
|
```
|
|
|
|
Alternatively you can use the following command in a terminal session:
|
|
|
|
```shell
|
|
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
|
|
```
|
|
|
|
To disable the "read only" mode to allow operations on the Elasticsearch indexes
|
|
you can issue the following command, similary in the Rails console:
|
|
|
|
```ruby
|
|
Search::Client.indices.get(index: "*").keys.each do |index_name|
|
|
Search::Client.indices.put_settings(
|
|
index: index_name,
|
|
body: { "index.blocks.read_only_allow_delete" => nil }
|
|
)
|
|
end
|
|
```
|
|
|
|
Or alternatively:
|
|
|
|
```shell
|
|
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'
|
|
```
|
|
|
|
If instead you want to tune the Elasticsearch disk allocator's settings, please
|
|
refer to
|
|
[Disk-based shard allocation](https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html#disk-allocator).
|
|
|
|
## CORS
|
|
|
|
If you are experiencing CORS issues locally or need to display more information
|
|
about the CORS headers, add the following variable to your `.env`:
|
|
|
|
```shell
|
|
export DEBUG_CORS=true
|
|
```
|