Github user aarondav commented on a diff in the pull request:
https://github.com/apache/spark/pull/3032#discussion_r19710069
--- Diff:
core/src/main/scala/org/apache/spark/storage/ShuffleBlockFetcherIterator.scala
---
@@ -313,14 +319,30 @@ object ShuffleBlockFetcherIterator {
}
/**
- * Result of a fetch from a remote block. A failure is represented as
size == -1.
+ * Result of a fetch from a remote block.
+ */
+ sealed trait FetchResult {
+ val blockId: BlockId
+ }
+
+ /**
+ * Result of a fetch from a remote block successfully.
* @param blockId block id
* @param size estimated size of the block, used to calculate
bytesInFlight.
- * Note that this is NOT the exact bytes. -1 if failure is
present.
- * @param buf [[ManagedBuffer]] for the content. null is error.
+ * Note that this is NOT the exact bytes.
+ * @param buf [[ManagedBuffer]] for the content.
*/
- case class FetchResult(blockId: BlockId, size: Long, buf: ManagedBuffer)
{
- def failed: Boolean = size == -1
- if (failed) assert(buf == null) else assert(buf != null)
+ private[storage] case class SuccessFetchResult(blockId: BlockId, size:
Long, buf: ManagedBuffer)
--- End diff --
Just to make sure we're on absolutely the same page, `private[storage]` is
used to restrict visibility, to ensure that we never accidentally expose this
API to a wider audience than necessary. `sealed` is used to restrict
inheritance, so that the compiler (and programmer) can check that all cases
have been matched on. The attributes are thus orthogonal in nature.
Adding `private[storage]` is good here, and we should also add it to the
`trait FetchResult` as well, to make sure it's restricted in both visibility
and inheritance.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]