-
Notifications
You must be signed in to change notification settings - Fork 8.9k
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
HADOOP-19348. Integrate analytics accelerator into S3A. #7334
base: trunk
Are you sure you want to change the base?
Conversation
e18d0a4
to
d45beae
Compare
Few things to discuss here:
|
private static final String LOGICAL_IO_PREFIX = "logicalio"; | ||
|
||
@Test | ||
public void testConnectorFrameWorkIntegration() throws IOException { |
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.
small parquet file, src/test/parquet
can we read the file ~10sKB
does it just complete and not complete
malformed footer
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.
some old comments about javadoc
...op-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/streams/AnalyticsStream.java
Show resolved
Hide resolved
...s/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/streams/AnalyticsStreamFactory.java
Show resolved
Hide resolved
public void testOverwriteExistingFile() throws Throwable { | ||
// Will remove this when Analytics Accelerator supports overwrites | ||
skipIfAnalyticsAcceleratorEnabled(this.createConfiguration(), | ||
"Analytics Accelerator does not support overwrites yet"); |
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.
Analytics Accelerator is about read optimizations right? How does this relate to overwrite?
Is it because the file will be changed? You mean it doesn't support the RemoteFileChangedException?
@@ -65,6 +66,8 @@ protected Configuration createConfiguration() { | |||
*/ | |||
@Test | |||
public void testNotFoundFirstRead() throws Exception { | |||
skipIfAnalyticsAcceleratorEnabled(getConfiguration(), | |||
"Temporarily disabling to fix Exception handling on Analytics Accelerator"); |
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.
needs to be enabled.
e18d0a4
to
0d1f291
Compare
a3c7498
to
f408ec5
Compare
💔 -1 overall
This message was automatically generated. |
import org.apache.hadoop.fs.s3a.VectoredIOContext; | ||
|
||
/** | ||
* Requirements for requirements for streams from this factory, |
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.
java doc correction.
💔 -1 overall
This message was automatically generated. |
Commit 99fbdeb means this will no longer build as is, as AAL with the new constructor that lets you pass in file information awslabs/analytics-accelerator-s3#223 must be merged in and released first (WIP!) To test this currently, set the branch to commit: 038a692 |
import java.io.EOFException; | ||
import java.io.IOException; | ||
|
||
import org.apache.hadoop.fs.FSExceptionMessages; |
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.
nit, imports are out of order
|
||
package org.apache.hadoop.fs.s3a.impl.streams; | ||
|
||
import org.apache.hadoop.conf.Configuration; |
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.
usual nit: import ordering, and I'd prefer an explicit import of those Constants which are being used
@Override | ||
public void bind(final FactoryBindingParameters factoryBindingParameters) throws IOException { | ||
super.bind(factoryBindingParameters); | ||
this.s3SeekableInputStreamFactory = new LazyAutoCloseableReference<>(createS3SeekableInputStreamFactory()); |
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.
can you chop this line down..it's too wide fo side-by-side reviews
@@ -115,7 +115,7 @@ public class RequestFactoryImpl implements RequestFactory { | |||
/** | |||
* Callback to prepare requests. | |||
*/ | |||
private final PrepareRequest requestPreparer; | |||
private PrepareRequest requestPreparer; |
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 doesn't need to be non-final any more, I shall fix in my PR
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.
+1 pending:
- those little nits
- my PR in
- new release of your library (which I've just been looking at...may need a bit of resilience there, especially to premature -1 calls.
nice, thanks for the review! What do you mean by premature -1 calls? |
sometimes a read can return -1 due to network errors, not EOF. in that situation (look at read()) we abort the stream so it doesn't go back into the pool, then ask for a new one. Apparently before the abort() you could get back the same stream again, even through it was now failing. Inevitably, this is a consequence of the stream's long retention of the same connection; if it returned them after 60s this'd be less likely |
99fbdeb
to
b92a661
Compare
Description of PR
Initial integration of analytics accelerator.
How was this patch tested?
In progress
For code changes:
LICENSE
,LICENSE-binary
,NOTICE-binary
files?