diff --git a/src/Tests/TokenMenuTest.php b/src/Tests/TokenMenuTest.php
index 196c48f..aae29f1 100644
--- a/src/Tests/TokenMenuTest.php
+++ b/src/Tests/TokenMenuTest.php
@@ -7,6 +7,8 @@ use Drupal\Core\Url;
 use Drupal\node\Entity\NodeType;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\Core\Language\LanguageInterface;
+use Drupal\system\Entity\Menu;
+use Drupal\menu_link_content\Entity\MenuLinkContent;
 
 /**
  * Tests menu tokens.
@@ -331,4 +333,60 @@ class TokenMenuTest extends TokenTestBase {
     // $this->assertTokens('node', ['node' => $node->getTranslation('de')], ['menu-link' => 'German menu title']);
   }
 
+  /**
+   * Tests menu link parents token.
+   *
+   * Regression test for https://www.drupal.org/node/2769299
+   */
+  public function testMenuLinkParentsToken() {
+    // Create a menu with a simple link hierarchy :
+    // - parent
+    //   - child-1
+    //      - child-1-1
+    //        - child-1-1-1
+    Menu::create(array(
+      'id' => 'menu_test',
+      'label' => 'Test menu',
+    ))->save();
+    $base_options = [
+      'provider' => 'menu_test',
+      'menu_name' => 'menu_test',
+    ];
+    $parent = $base_options + [
+        'title' => 'parent title',
+        'link' => ['uri' => 'internal:/menu-test/hierarchy/parent'],
+    ];
+    $parent = MenuLinkContent::create($parent);
+    $parent->save();
+    $child_1 = $base_options + [
+        'title' => 'child_1 title',
+        'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child_1'],
+        'parent' => $parent->getPluginId(),
+    ];
+    $child_1 = MenuLinkContent::create($child_1);
+    $child_1->save();
+    $child_1_1 = $base_options + [
+        'title' => 'child_1_1 title',
+        'link' => ['uri' => 'internal:/menu-test/hierarchy/parent/child_1/child_1_1'],
+        'parent' => $child_1->getPluginId(),
+    ];
+    $child_1_1 = MenuLinkContent::create($child_1_1);
+    $child_1_1->save();
+
+    $this->assertTokens('menu-link', ['menu-link' => $child_1_1], ['parents' => 'parent title, child_1 title']);
+
+    // Change the parent of child_1_1 to parent at the entity level.
+    $child_1_1->parent->value = $parent->getPluginId();
+    $child_1_1->save();
+
+    $this->assertTokens('menu-link', ['menu-link' => $child_1_1], ['parents' => 'parent title']);
+
+    // Change the parent of child_1_1 to main, at the entity level.
+    $child_1_1->parent->value = '';
+    $child_1_1->save();
+
+    // The token shouldn't have been generated; the menu link has no parent.
+    $this->assertNoTokens('menu-link', ['menu-link' => $child_1_1], ['parents']);
+  }
+
 }
diff --git a/token.module b/token.module
index c3e2954..0e61e8a 100644
--- a/token.module
+++ b/token.module
@@ -571,7 +571,7 @@ function token_render_cache_set(&$markup, $elements) {
 function token_menu_link_load_all_parents($plugin_id) {
   $cache = &drupal_static(__FUNCTION__, array());
 
-  if (!isset($cache[$plugin_id])) {
+  //if (!isset($cache[$plugin_id])) {
     $cache[$plugin_id] = array();
     /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
     $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
@@ -582,7 +582,7 @@ function token_menu_link_load_all_parents($plugin_id) {
       $parent = $menu_link_manager->createInstance($parent_id);
       $cache[$plugin_id] = array($parent_id => $parent->getTitle()) + $cache[$plugin_id];
     }
-  }
+  //}
 
   return $cache[$plugin_id];
 }
