> On Sept. 15, 2014, 7:49 p.m., Guozhang Wang wrote: > > Have talked with Mayuresh and Joel about which mapValues should be > > converted to map. The summary is that > > > > 1. For now the only place we do in-place modification of a map is in > > ProducePartitionStatus, on isAcksPending and ErrorCode; however it is not > > guaranteed that we will do some in-place modification in the future that > > are actually on a view created by mapValues. > > 2. On the other hand, converting all mapValues to map whose resulted > > collection may be used outside the current block will increase many new > > object creations, especially for places where a map is called for each > > instance in map loop (for example the fetch response). > > > > So the suggested solution is that we should keep in mind of this risk for > > in-place modifications in Scala (fortunately no-one does that often) by: > > > > 1. Adding comments on where "map" is already used and MUST be used since > > its resultd collection items will be modified (for now the only place I > > know of is ProducePartitionStatus, Mayuresh could you double check if there > > are other cases?). > > 2. Add comments on function parameters that are passed in as a view > > indicating the given map should not be modified in-place. > > 3. Once we are making in-place modification into a Map in Scala, check if > > this collection can be created as a view. > > > > Mayuresh, could you submit another patch following this suggestion and also > > incorporating Neha's comments? > > Joel Koshy wrote: > Sounds good. For (2) you mean name arguments that are views clearly. > Likewise, if a method returns the result of a mapValues then name the method > with something that clearly indicates that it is returning a view. This is > mainly to get around the fact that although it is a view mapValues actually > returns a Map type (unlike other collections which return an explicit > <collection>View type).
Cool. I will make th changes and upload a new patch. - Mayuresh ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/25136/#review53391 ----------------------------------------------------------- On Sept. 3, 2014, 6:27 p.m., Mayuresh Gharat wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/25136/ > ----------------------------------------------------------- > > (Updated Sept. 3, 2014, 6:27 p.m.) > > > Review request for kafka. > > > Bugs: KAFKA-1610 > https://issues.apache.org/jira/browse/KAFKA-1610 > > > Repository: kafka > > > Description > ------- > > Added comments explaining the changes and reverted back some changes as per > comments on the reviewboard > > > Removed the unnecessary import > > > Made changes to comments as per the suggestions on the reviewboard > > > Diffs > ----- > > core/src/main/scala/kafka/admin/ReassignPartitionsCommand.scala > 691d69a49a240f38883d2025afaec26fd61281b5 > core/src/main/scala/kafka/controller/KafkaController.scala > 8ab4a1b8072c9dd187a9a6e94138b725d1f1b153 > core/src/main/scala/kafka/server/DelayedFetch.scala > e0f14e25af03e6d4344386dcabc1457ee784d345 > core/src/main/scala/kafka/server/DelayedProduce.scala > 9481508fc2d6140b36829840c337e557f3d090da > core/src/main/scala/kafka/server/KafkaApis.scala > c584b559416b3ee4bcbec5966be4891e0a03eefb > core/src/main/scala/kafka/server/KafkaServer.scala > 28711182aaa70eaa623de858bc063cb2613b2a4d > core/src/main/scala/kafka/tools/ReplicaVerificationTool.scala > af4783646803e58714770c21f8c3352370f26854 > core/src/test/scala/unit/kafka/server/LeaderElectionTest.scala > c2ba07c5fdbaf0e65ca033b2e4d88f45a8a15b2e > > Diff: https://reviews.apache.org/r/25136/diff/ > > > Testing > ------- > > Ran the unit tests and everything passed and the build succeeeded > > > Thanks, > > Mayuresh Gharat > >