Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting version type via script processor can trigger assertion #86864

Open
stu-elastic opened this issue May 17, 2022 · 1 comment
Open

Setting version type via script processor can trigger assertion #86864

stu-elastic opened this issue May 17, 2022 · 1 comment
Labels
>bug :Data Management/Ingest Node Execution or management of Ingest Pipelines including GeoIP Team:Data Management Meta label for data/management team

Comments

@stu-elastic
Copy link
Contributor

stu-elastic commented May 17, 2022

Elasticsearch Version

8.3+ (including master)

Problem Description

If a script processor sets the version type to "external" without setting the version for the document, an assertion in IndexShard.applyIndexOperationOnPrimary, assert versionType.validateVersionForWrites(version), fires and terminates the node.

Rather than triggering the assertion, perhaps we could reject the document if validateVersionForWrites is false?

Steps to Reproduce

PUT _ingest/pipeline/vt
{               
  "description": "assert",
  "processors": [  
    {
      "script": {
        "description": "sets version type",
        "lang": "painless",
        "source": "ctx._version_type = 'external'"
      }
    }
  ]
}
POST write-pipeline/_doc/1?pipeline=vt
{ "foo": "bar" }
[ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [runTask-0] fatal error in thread [elasticsearch[runTask-0][write][T#9]], exiting
»  java.lang.AssertionError: null
»       at org.elasticsearch.index.shard.IndexShard.applyIndexOperationOnPrimary(IndexShard.java:879) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.bulk.TransportShardBulkAction.executeBulkItemRequest(TransportShardBulkAction.java:319) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.bulk.TransportShardBulkAction$2.doRun(TransportShardBulkAction.java:185) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.bulk.TransportShardBulkAction.performOnPrimary(TransportShardBulkAction.java:251) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.bulk.TransportShardBulkAction.dispatchedShardOperationOnPrimary(TransportShardBulkAction.java:131) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.bulk.TransportShardBulkAction.dispatchedShardOperationOnPrimary(TransportShardBulkAction.java:70) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.action.support.replication.TransportWriteAction$1.doRun(TransportWriteAction.java:210) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:773) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-8.3.0-SNAPSHOT.jar:8.3.0-SNAPSHOT]
»       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
»       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
»       at java.lang.Thread.run(Thread.java:833) [?:?]
@stu-elastic stu-elastic added >bug :Data Management/Ingest Node Execution or management of Ingest Pipelines including GeoIP needs:triage Requires assignment of a team area label labels May 17, 2022
@elasticmachine elasticmachine added the Team:Data Management Meta label for data/management team label May 17, 2022
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-data-management (Team:Data Management)

@jtibshirani jtibshirani removed the needs:triage Requires assignment of a team area label label May 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Data Management/Ingest Node Execution or management of Ingest Pipelines including GeoIP Team:Data Management Meta label for data/management team
Projects
None yet
Development

No branches or pull requests

3 participants