-
Notifications
You must be signed in to change notification settings - Fork 24
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
Bug fixes and refactoring #38
Conversation
src/main/java/org/opensearch/search/relevance/configuration/ConfigurationUtils.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/search/relevance/actionfilter/SearchActionFilter.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/search/relevance/actionfilter/SearchActionFilter.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/search/relevance/actionfilter/SearchActionFilter.java
Show resolved
Hide resolved
...ava/org/opensearch/search/relevance/configuration/ResultTransformerConfigurationFactory.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess setting
class is more specific towards that transformer itself, whereas the configuration
is the schema of the search workflow. There are two things I am not sure if we should put in this PR:
- Can I use multiple same reranker, with different setting and configuration?
- Do we want to provide more flexibility, such as one transformer depend on several other transformers.
...pensearch/search/relevance/transformer/kendraintelligentranking/client/KendraHttpClient.java
Show resolved
Hide resolved
...pensearch/search/relevance/transformer/kendraintelligentranking/client/KendraHttpClient.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/search/relevance/actionfilter/SearchActionFilter.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/search/relevance/actionfilter/SearchActionFilter.java
Outdated
Show resolved
Hide resolved
...pensearch/search/relevance/transformer/kendraintelligentranking/KendraIntelligentRanker.java
Outdated
Show resolved
Hide resolved
...pensearch/search/relevance/transformer/kendraintelligentranking/KendraIntelligentRanker.java
Show resolved
Hide resolved
...mer/kendraintelligentranking/configuration/KendraIntelligentRankingConfigurationFactory.java
Outdated
Show resolved
Hide resolved
...ransformer/kendraintelligentranking/configuration/KendraIntelligentRankingConfiguration.java
Show resolved
Hide resolved
1. Shallow clone SearchResponse in SearchActionFilter. The only properties that we're currently changing are SearchHit and timeTookMillis. This is also less brittle as we don't try to implement deserialization ourselves. 2. KendraIntelligentRanker doesn't transform if the required client settings (endpoint + execution plan ID) are missing. 3. A lot of refactoring to prepare for other transformers. Where we previously had logic of the form `if kendra_intelligent_ranking then do Kendra intelligent ranking`, now the APIs support arbitrary named transformers. This required updates to tests and configuration code. 4. Added tests and fixes for SearchConfigurationExtBuilder. Signed-off-by: Michael Froh <froh@amazon.com>
Looking at the PR on GitHub, I spotted a few mistakes and possible improvements. Signed-off-by: Michael Froh <froh@amazon.com>
Signed-off-by: Michael Froh <froh@amazon.com>
2a40bd3
to
698f275
Compare
Codecov Report
@@ Coverage Diff @@
## main #38 +/- ##
============================================
+ Coverage 60.43% 65.52% +5.09%
- Complexity 155 172 +17
============================================
Files 29 29
Lines 867 879 +12
Branches 119 119
============================================
+ Hits 524 576 +52
+ Misses 304 254 -50
- Partials 39 49 +10
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
serviceEndpoint = clientSettings.getServiceEndpoint(); | ||
executionPlanId = clientSettings.getExecutionPlanId(); | ||
if (isValid()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Non-blocking:
This is what I preferred:
if (!isValid()) {
amazonHttpClient = null;
aws4Signer = null;
awsCredentialsProvider = null;
errorHandler = null;
responseHandler = null;
return;
}
amazonHttpClient = AccessController.doPrivileged((PrivilegedAction<AmazonHttpClient>) () -> new AmazonHttpClient(new ClientConfiguration()));
errorHandler = new SimpleAwsErrorHandler();
responseHandler = new SimpleResponseHandler();
aws4Signer = new AWS4Signer();
aws4Signer.setServiceName(KENDRA_RANKING_SERVICE_NAME);
aws4Signer.setRegionName(clientSettings.getServiceRegion());
...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is awesome! Approved with non-blocking comments.
We do want to review the full set of metrics and logging events to capture. We'll create another issue for that purpose. |
* Bug fixes and refactoring 1. Shallow clone SearchResponse in SearchActionFilter. The only properties that we're currently changing are SearchHit and timeTookMillis. This is also less brittle as we don't try to implement deserialization ourselves. 2. KendraIntelligentRanker doesn't transform if the required client settings (endpoint + execution plan ID) are missing. 3. A lot of refactoring to prepare for other transformers. Where we previously had logic of the form `if kendra_intelligent_ranking then do Kendra intelligent ranking`, now the APIs support arbitrary named transformers. This required updates to tests and configuration code. 4. Added tests and fixes for SearchConfigurationExtBuilder. Signed-off-by: Michael Froh <froh@amazon.com> * Address PR comments from myself Looking at the PR on GitHub, I spotted a few mistakes and possible improvements. Signed-off-by: Michael Froh <froh@amazon.com> * Address comments by noCharger Signed-off-by: Michael Froh <froh@amazon.com> Signed-off-by: Michael Froh <froh@amazon.com> (cherry picked from commit d8ba75b)
* Bug fixes and refactoring 1. Shallow clone SearchResponse in SearchActionFilter. The only properties that we're currently changing are SearchHit and timeTookMillis. This is also less brittle as we don't try to implement deserialization ourselves. 2. KendraIntelligentRanker doesn't transform if the required client settings (endpoint + execution plan ID) are missing. 3. A lot of refactoring to prepare for other transformers. Where we previously had logic of the form `if kendra_intelligent_ranking then do Kendra intelligent ranking`, now the APIs support arbitrary named transformers. This required updates to tests and configuration code. 4. Added tests and fixes for SearchConfigurationExtBuilder. Signed-off-by: Michael Froh <froh@amazon.com> * Address PR comments from myself Looking at the PR on GitHub, I spotted a few mistakes and possible improvements. Signed-off-by: Michael Froh <froh@amazon.com> * Address comments by noCharger Signed-off-by: Michael Froh <froh@amazon.com> Signed-off-by: Michael Froh <froh@amazon.com> (cherry picked from commit d8ba75b) Co-authored-by: msfroh <froh@amazon.com>
if kendra_intelligent_ranking then do Kendra intelligent ranking
, now the APIs support arbitrary named transformers. This required updates to tests and configuration code.Signed-off-by: Michael Froh froh@amazon.com
Description
See commit message above.
Issues Resolved
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.