gpt4 book ai didi

java - FusionAuth 与 AWS Elasticsearch 的不完整重新索引

转载 作者:行者123 更新时间:2023-12-01 18:22:37 29 4
gpt4 key购买 nike

我正在从自托管 Elasticsearch FusionAuth 搜索迁移到 AWS Elasticsearch Service 解决方案。

我有一个新的 FusionAuth 应用程序 EC2 实例,该实例从配置为使用新 Elasticsearch 服务的正在使用的数据库中读取数据。

在从新应用程序实例触发重新索引时,我发现只有大约 60k 或 62.5k 文档被写入新索引,而我预计大约有 600 万个文档。

我没有看到来自 AWS 的 Elasticsearch Service 的错误,并且在应用程序的日志中我可以看到:(有意省略端点)

Feb 13, 2020 10:18:46.116 AM INFO  io.fusionauth.api.service.search.ElasticSearchClientProvider - Connecting to FusionAuth Search Engine at [https://vpc-<<omitted>>.eu-west-1.es.amazonaws.com]
13-Feb-2020 11:19:55.176 INFO [http-nio-9011-exec-3] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:430)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:684)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
"/usr/local/fusionauth/logs/fusionauth-app.log" [readonly] 43708L, 4308629C 42183,1 96%
at io.fusionauth.api.service.search.client.domain.documents.IndexUser.<init>(IndexUser.java:79)
at io.fusionauth.api.service.search.ElasticsearchSearchEngine.lambda$index$1(ElasticsearchSearchEngine.java:140)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at io.fusionauth.api.service.search.ElasticsearchSearchEngine.index(ElasticsearchSearchEngine.java:140)
at io.fusionauth.api.service.user.ReindexRunner$ReindexWorker.run(ReindexRunner.java:101)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "Thread-14" java.lang.NullPointerException
at io.fusionauth.api.service.search.client.domain.documents.IndexUser.<init>(IndexUser.java:79)
at io.fusionauth.api.service.search.ElasticsearchSearchEngine.lambda$index$1(ElasticsearchSearchEngine.java:140)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at io.fusionauth.api.service.search.ElasticsearchSearchEngine.index(ElasticsearchSearchEngine.java:140)
at io.fusionauth.api.service.user.ReindexRunner$ReindexWorker.run(ReindexRunner.java:101)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "Thread-13" java.lang.NullPointerException
Exception in thread "Thread-11" java.lang.NullPointerException
Exception in thread "Thread-12" java.lang.NullPointerException
Feb 18, 2020 10:23:29.064 AM INFO io.fusionauth.api.service.user.ReindexRunner - Reindex completed in [86797] ms or [86] seconds.

尽管有一些异常(exception),但末尾还有一个“重新索引已完成”信息日志。

由于不了解 Elasticsearch 的详细情况,我也不知道从哪里开始调查 NullPointerException。

最佳答案

看起来重新索引操作发生了异常,这可能是索引被截断的原因。

Exception in thread "Thread-14" java.lang.NullPointerException
at io.fusionauth.api.service.search.client.domain.documents.IndexUser.<init>(IndexUser.java:79)

此代码假设您有用户名或电子邮件地址。这应该由 FusionAuth API 强制执行。但在本例中,要发生此异常,电子邮件和用户名均为 NULL

您如何使用导入 API、用户 API 或其他方式让用户进入数据库?

理论上,您应该至少找到一个电子邮件地址和用户名值为 NULL 的用户。

此查询(或类似查询)应该找到有问题的用户,然后我们需要确定该用户是如何添加到 FusionAuth 的。

SELECT email, username from identities WHERE email IS NULL OR username IS NULL

关于java - FusionAuth 与 AWS Elasticsearch 的不完整重新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60278858/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com