From 1ae3c0fc5e0273319d0e9497268a4c9854aae2e0 Mon Sep 17 00:00:00 2001
From: Prashant Sharma <scrapcodes@gmail.com>
Date: Sat, 14 Dec 2013 10:44:24 +0530
Subject: [PATCH] Added a comment about ActorRef and ActorSelection difference.

---
 .../src/main/scala/org/apache/spark/MapOutputTracker.scala | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/core/src/main/scala/org/apache/spark/MapOutputTracker.scala b/core/src/main/scala/org/apache/spark/MapOutputTracker.scala
index fbda11f578..10fae5af9f 100644
--- a/core/src/main/scala/org/apache/spark/MapOutputTracker.scala
+++ b/core/src/main/scala/org/apache/spark/MapOutputTracker.scala
@@ -72,6 +72,13 @@ private[spark] class MapOutputTracker extends Logging {
   // throw a SparkException if this fails.
   private def askTracker(message: Any): Any = {
     try {
+      /*
+        The difference between ActorRef and ActorSelection is well explained here:
+        http://doc.akka.io/docs/akka/2.2.3/project/migration-guide-2.1.x-2.2.x.html#Use_actorSelection_instead_of_actorFor
+        In spark a map output tracker can be either started on Driver where it is created which
+        is an ActorRef or it can be on executor from where it is looked up which is an
+        actorSelection.
+       */
       val future = trackerActor match {
         case Left(a: ActorRef) => a.ask(message)(timeout)
         case Right(b: ActorSelection) => b.ask(message)(timeout)
-- 
GitLab