[
https://issues.apache.org/jira/browse/CASSANDRA-1189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12894179#action_12894179
]
Gary Dusbabek commented on CASSANDRA-1189:
------------------------------------------
I'm still testing and looking at things, but in the interest of getting you
some feedback...
* FileStreamTask-no point in keeping a reference to file since it could be had
from header.
* StreamHeader-the protected fields should be final. Consider renaming
"transfer" to something that better indicates the stream was pushed as opposed
to requested. "containsPendingFiles" could be made redundant by converting to a
method that checks for null-ness of "pending".
* IncomingStreamReader makes a !=null check in the constructor that is
redundant.
* MessageSerDeser is only used by its test. It can the test can be removed.
* StreamInManager-instance() needs a better name ("get" or "put"). remove()
could be private.
* StreamingRequestTest is not valid. It passes whether or not the streaming has
taken place (because it adds the sstables).
* StreamOut-consider renaming open() to something that indicates a flush is
happening. transferSSTablesForRequest() could be private. the first debug
statement doesn't include a {} for the second parameter.
* StreamRequestMetadata-protected variables should be final. singleFile could
be made redundant by replacing with a method that checks for null-ness of file.
* Why doesn't SO.transferSSTablesForRequest enqueue multiple files and have the
stream task remove from pending. I think we still have the ordering problem
since SOM.removePending still pops the last file.
* calls to SIM.requestFile can be inlined to SI.requestFile
Having stream metadata spread across four classes (StreamRequestMetadata,
PendingFile, StreamHeader and StreamContext) makes me think that we have more
room for simplification. What do you think?
> Refactor streaming
> ------------------
>
> Key: CASSANDRA-1189
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1189
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Affects Versions: 0.7 beta 1
> Reporter: Gary Dusbabek
> Assignee: Nirmal Ranganathan
> Priority: Critical
> Fix For: 0.7.0
>
> Attachments:
> 0001-Refactored-streaming-to-make-it-more-streamlined.patch,
> 0002-Test-cases-for-Streaming-Messages.patch
>
>
> The current architecture is buggy because it makes the assumption that only
> one stream can be in process between two nodes at a given time, and stream
> send order never changes. Because of this, the ACK process gets fouled up
> when other services wish to stream files.
> The process is somewhat contorted too (request, initiate, initiate done,
> send).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.