<commit_before>diff --git a/mesos/c-api.hpp b/mesos/c-api.hpp
index 5ce91cb..f7b67a6 100644
--- a/mesos/c-api.hpp
+++ b/mesos/c-api.hpp
@@ -137,6 +137,10 @@ SchedulerPtrPair scheduler_init(
 
 void scheduler_destroy(void* driver, void* scheduler);
 
+SchedulerDriverStatus scheduler_reconcileTasks(
+    SchedulerDriverPtr driver,
+    ProtobufObj* statuses);
+
 //
 // Executor driver calls
 //
diff --git a/mesos/scheduler.go b/mesos/scheduler.go
index 3d0cff7..629a925 100644
--- a/mesos/scheduler.go
+++ b/mesos/scheduler.go
@@ -84,17 +84,18 @@ type Scheduler interface {
 // ScheduerDriver defines the interfaces that needed to be implemented.
 type SchedulerDriver interface {
 	Init() error
-	Start() (Status,error)
-	Stop(bool) (Status,error)
-	Abort() (Status,error)
-	Join() (Status,error)
-	Run() (Status,error)
+	Start() (Status, error)
+	Stop(bool) (Status, error)
+	Abort() (Status, error)
+	Join() (Status, error)
+	Run() (Status, error)
 	RequestResources([]*Request) error
 	LaunchTasks(*OfferID, []*TaskInfo, *Filters) error
 	KillTask(*TaskID) error
 	DeclineOffer(*OfferID, *Filters) error
 	ReviveOffers() error
 	SendFrameworkMessage(*ExecutorID, *SlaveID, string) error
+	ReconcileTasks([]*TaskStatus) error
 	Destroy()
 	Wait()
 }
@@ -383,6 +384,32 @@ func (sdriver *MesosSchedulerDriver) SendFrameworkMessage(
 	return nil
 }
 
+func (sdriver *MesosSchedulerDriver) ReconcileTasks(statusList []*TaskStatus) error {
+	if sdriver.driver != nil {
+		var statusData []byte
+		for _, status := range statusList {
+			statusItemData, err := serializeItem(status)
+			if err != nil {
+				return err
+			}
+			statusData = append(statusData, statusItemData...)
+		}
+
+		statusListObj := C.ProtobufObj{
+			data: unsafe.Pointer(&statusData[0]),
+			size: C.size_t(len(statusData)),
+		}
+
+		C.scheduler_reconcileTasks(
+			C.SchedulerDriverPtr(sdriver.driver),
+			&statusListObj)
+	} else {
+		return ErrSchedulerNotInitialized
+	}
+
+	return nil
+}
+
 func (sdriver *MesosSchedulerDriver) Destroy() {
 	C.scheduler_destroy(sdriver.driver, sdriver.scheduler)
 }
diff --git a/mesos/scheduler_driver.cpp b/mesos/scheduler_driver.cpp
index ab08b50..88ce4f0 100644
--- a/mesos/scheduler_driver.cpp
+++ b/mesos/scheduler_driver.cpp
@@ -241,6 +241,26 @@ SchedulerDriverStatus scheduler_launchTasks(
 }
 
 
+SchedulerDriverStatus scheduler_reconcileTasks(
+    SchedulerDriverPtr driver,
+    ProtobufObj* statuses)
+{
+  TRACE("scheduler_reconcileTasks()\n");
+  assert(driver != NULL);
+  assert(statuses != NULL);
+
+  MesosSchedulerDriver* mdriver =
+      reinterpret_cast<MesosSchedulerDriver*>(driver);
+
+  vector<TaskStatus> taskStatuses;
+  if (!utils::deserialize<TaskStatus>(taskStatuses, statuses)) {
+    return DRIVER_ABORTED;
+  }
+
+  return mdriver->reconcileTasks(taskStatuses);
+}
+
+
 SchedulerDriverStatus scheduler_killTask(
     SchedulerDriverPtr driver,
     ProtobufObj* taskIdMessage)<commit_msg>revised diff to be less confusing to patch program<commit_after>diff --git a/mesos/c-api.hpp b/mesos/c-api.hpp
index 5ce91cb..f7b67a6 100644
--- a/mesos/c-api.hpp
+++ b/mesos/c-api.hpp
@@ -137,6 +137,10 @@ SchedulerPtrPair scheduler_init(
 
 void scheduler_destroy(void* driver, void* scheduler);
 
+SchedulerDriverStatus scheduler_reconcileTasks(
+    SchedulerDriverPtr driver,
+    ProtobufObj* statuses);
+
 //
 // Executor driver calls
 //
diff --git a/mesos/scheduler.go b/mesos/scheduler.go
index 3d0cff7..629a925 100644
--- a/mesos/scheduler.go
+++ b/mesos/scheduler.go
@@ -84,17 +84,18 @@ type Scheduler interface {
 // ScheduerDriver defines the interfaces that needed to be implemented.
 type SchedulerDriver interface {
 	Init() error
-	Start() (Status,error)
-	Stop(bool) (Status,error)
-	Abort() (Status,error)
-	Join() (Status,error)
-	Run() (Status,error)
+	Start() (Status, error)
+	Stop(bool) (Status, error)
+	Abort() (Status, error)
+	Join() (Status, error)
+	Run() (Status, error)
 	RequestResources([]*Request) error
 	LaunchTasks(*OfferID, []*TaskInfo, *Filters) error
 	KillTask(*TaskID) error
 	DeclineOffer(*OfferID, *Filters) error
 	ReviveOffers() error
 	SendFrameworkMessage(*ExecutorID, *SlaveID, string) error
+	ReconcileTasks([]*TaskStatus) error
 	Destroy()
 	Wait()
 }
@@ -383,6 +384,32 @@ func (sdriver *MesosSchedulerDriver) SendFrameworkMessage(
 	return nil
 }
 
+func (sdriver *MesosSchedulerDriver) ReconcileTasks(statusList []*TaskStatus) error {
+	if sdriver.driver != nil {
+		var statusData []byte
+		for _, status := range statusList {
+			statusItemData, err := serializeItem(status)
+			if err != nil {
+				return err
+			}
+			statusData = append(statusData, statusItemData...)
+		}
+
+		statusListObj := C.ProtobufObj{
+			data: unsafe.Pointer(&statusData[0]),
+			size: C.size_t(len(statusData)),
+		}
+
+		C.scheduler_reconcileTasks(
+			C.SchedulerDriverPtr(sdriver.driver),
+			&statusListObj)
+	} else {
+		return ErrSchedulerNotInitialized
+	}
+
+	return nil
+}
+
 func (sdriver *MesosSchedulerDriver) Destroy() {
 	C.scheduler_destroy(sdriver.driver, sdriver.scheduler)
 }
diff --git a/mesos/scheduler_driver.cpp b/mesos/scheduler_driver.cpp
index ab08b50..01c389d 100644
--- a/mesos/scheduler_driver.cpp
+++ b/mesos/scheduler_driver.cpp
@@ -240,6 +240,24 @@ SchedulerDriverStatus scheduler_launchTasks(
   return mdriver->launchTasks(offer, taskInfos, filters_);
 }
 
+SchedulerDriverStatus scheduler_reconcileTasks(
+    SchedulerDriverPtr driver,
+    ProtobufObj* statuses)
+{
+  TRACE("scheduler_reconcileTasks()\n");
+  assert(driver != NULL);
+  assert(statuses != NULL);
+
+  MesosSchedulerDriver* mdriver =
+      reinterpret_cast<MesosSchedulerDriver*>(driver);
+
+  vector<TaskStatus> taskStatuses;
+  if (!utils::deserialize<TaskStatus>(taskStatuses, statuses)) {
+    return DRIVER_ABORTED;
+  }
+
+  return mdriver->reconcileTasks(taskStatuses);
+}
 
 SchedulerDriverStatus scheduler_killTask(
     SchedulerDriverPtr driver,
{'fraction_non_alphanumeric': 0.14442197505898213, 'fraction_numerical': 0.026457701381867205, 'mean_word_length': 4.841535433070866, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 12, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4419602', 'n_tokens_mistral': 2329, 'n_tokens_neox': 2162, 'n_words': 405}