apache / apache/openwhisk

Status code '405 Method Not Allowed' was returned from ElasticSearchStore

Open
#4,022 3 comments 0 reactions 0 assignees View on GitHub
controller help wanted logging
Dominant language
Scala
Stars
6.8k
Forks
1.2k
Avg merge
2d 14h
Merged PRs (30d)
2

Description

When I use ElasticSearchStore to fetch activation logs, system will report such error, I think it is raised from elasticsearch's `_search` API

Then I checked the code, and found below in `whisk/core/containerpool/logging/ElasticSearchRestClient.scala`:

```scala
def search[T: RootJsonReader](index: String,
payload: EsQuery = EsQuery(EsQueryAll()),
headers: List[HttpHeader] = List.empty): Future[Either[StatusCode, T]] =
requestJson[T](mkJsonRequest(POST, Uri(index), payload.toJson.asJsObject, baseHeaders ++ headers))
```

what confused me is that the uri for search in ES should be like `${index_name}/_search` while uri in above codes is not

I'm not sure whether this is a bug or meant to be like this(then I must have missed something)

## Environment details:

* lambda version: latest master branch
* elasticsearch version: 6.3.2

## Steps to reproduce the issue:

1. start a elasticsearch container

```
docker run -td --name es -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:6.3.2
```

2. edit config for logstash and start it

```
input {
file {
path => "/tmp/wsklogs/invoker0/userlogs-*.log"
codec => "json"
}
}

output {
elasticsearch{
hosts => ["http://x.x.x.x:9200"]
index => "whisk_user_logs"
}
}
```

3. deploy the openwhisk on a single node, with below options added to `ansible/group_vars/all`

```
userLogs_spi: whisk.core.containerpool.logging.ElasticSearchLogStoreProvider
invoker_extraEnv:
- CONFIG_whisk_logstore_elasticsearch_protocol: http
- CONFIG_whisk_logstore_elasticsearch_host: x.x.x.x
- CONFIG_whisk_logstore_elasticsearch_port: 9200
- CONFIG_whisk_logstore_elasticsearch_path: /whisk_user_logs
- CONFIG_whisk_logstore_elasticsearch_logSchema_userLogs: logs
- CONFIG_whisk_logstore_elasticsearch_logSchema_message: namespaceId
- CONFIG_whisk_logstore_elasticsearch_logSchema_activationId: activationId
- CONFIG_whisk_logstore_elasticsearch_logSchema_stream: stream
- CONFIG_whisk_logstore_elasticsearch_logSchema_time: time
controller_extraEnv:
- CONFIG_whisk_logstore_elasticsearch_protocol: http
- CONFIG_whisk_logstore_elasticsearch_host: x.x.x.x
- CONFIG_whisk_logstore_elasticsearch_port: 9200
- CONFIG_whisk_logstore_elasticsearch_path: /whisk_user_logs
- CONFIG_whisk_logstore_elasticsearch_logSchema_userLogs: logs
- CONFIG_whisk_logstore_elasticsearch_logSchema_message: namespaceId
- CONFIG_whisk_logstore_elasticsearch_logSchema_activationId: activationId
- CONFIG_whisk_logstore_elasticsearch_logSchema_stream: stream
- CONFIG_whisk_logstore_elasticsearch_logSchema_time: time
```

4. invoke an action and get its activation's log:

```
curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs
```

## Provide the expected results and outputs:

```
# curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs
{"logs":[]}
```

## Provide the actual results and outputs:

```
# curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs
{"error":"Status code '405 Method Not Allowed' was returned from log store","code":"5c81a8b7b2fc5b840a61f6e175e1d30a"}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.