Bug fixes and refactoring - #38
Conversation
There was a problem hiding this comment.
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.
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❌ Patch coverage is Additional details and impacted files@@ 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 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); | ||
| serviceEndpoint = clientSettings.getServiceEndpoint(); | ||
| executionPlanId = clientSettings.getExecutionPlanId(); | ||
| if (isValid()) { |
There was a problem hiding this comment.
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());
...
noCharger
left a comment
There was a problem hiding this comment.
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.