{"action":"closed","issue":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3468","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3468/labels{/name}","comments_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3468/comments","events_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3468/events","html_url":"https://github.com/rethinkdb/rethinkdb/issues/3468","id":52705039,"number":3468,"title":"Cannot perform read: lost contact with reader","user":{"login":"deontologician","id":1366,"avatar_url":"https://avatars.githubusercontent.com/u/1366?v=3","gravatar_id":"","url":"https://api.github.com/users/deontologician","html_url":"https://github.com/deontologician","followers_url":"https://api.github.com/users/deontologician/followers","following_url":"https://api.github.com/users/deontologician/following{/other_user}","gists_url":"https://api.github.com/users/deontologician/gists{/gist_id}","starred_url":"https://api.github.com/users/deontologician/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deontologician/subscriptions","organizations_url":"https://api.github.com/users/deontologician/orgs","repos_url":"https://api.github.com/users/deontologician/repos","events_url":"https://api.github.com/users/deontologician/events{/privacy}","received_events_url":"https://api.github.com/users/deontologician/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/labels/cp%3Aweb-ui","name":"cp:web-ui","color":"ededed"}],"state":"closed","locked":false,"assignee":{"login":"deontologician","id":1366,"avatar_url":"https://avatars.githubusercontent.com/u/1366?v=3","gravatar_id":"","url":"https://api.github.com/users/deontologician","html_url":"https://github.com/deontologician","followers_url":"https://api.github.com/users/deontologician/followers","following_url":"https://api.github.com/users/deontologician/following{/other_user}","gists_url":"https://api.github.com/users/deontologician/gists{/gist_id}","starred_url":"https://api.github.com/users/deontologician/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deontologician/subscriptions","organizations_url":"https://api.github.com/users/deontologician/orgs","repos_url":"https://api.github.com/users/deontologician/repos","events_url":"https://api.github.com/users/deontologician/events{/privacy}","received_events_url":"https://api.github.com/users/deontologician/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/81","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/81/labels","id":777873,"number":81,"title":"1.16","description":"","creator":{"login":"coffeemug","id":48436,"avatar_url":"https://avatars.githubusercontent.com/u/48436?v=3","gravatar_id":"","url":"https://api.github.com/users/coffeemug","html_url":"https://github.com/coffeemug","followers_url":"https://api.github.com/users/coffeemug/followers","following_url":"https://api.github.com/users/coffeemug/following{/other_user}","gists_url":"https://api.github.com/users/coffeemug/gists{/gist_id}","starred_url":"https://api.github.com/users/coffeemug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coffeemug/subscriptions","organizations_url":"https://api.github.com/users/coffeemug/orgs","repos_url":"https://api.github.com/users/coffeemug/repos","events_url":"https://api.github.com/users/coffeemug/events{/privacy}","received_events_url":"https://api.github.com/users/coffeemug/received_events","type":"User","site_admin":false},"open_issues":35,"closed_issues":149,"state":"open","created_at":"2014-09-04T04:49:30Z","updated_at":"2015-01-07T00:40:04Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2014-12-23T01:02:24Z","updated_at":"2015-01-07T00:40:04Z","closed_at":"2015-01-07T00:40:04Z","body":"Get this occasionally in the webui when reconfiguring. My guess is the table.info() calls are failing.\r\n\r\n```javascript\r\nCannot perform read: lost contact with direct reader in:\r\n\r\nr.do(r.db(\"rethinkdb\").table(\"server_config\").coerceTo(\"array\"), r.db(\"rethinkdb\").table(\"table_status\").get(\"de68f77f-2382-46e3-b173-8cf30435a2fa\"), r.db(\"rethinkdb\").table(\"table_config\").get(\"de68f77f-2382-46e3-b173-8cf30435a2fa\"), function(var_84, var_85, var_86) {\r\n  return r.branch(var_85.eq(null), null, var_85.merge({\r\n    max_shards: 32,\r\n    num_shards: var_85(\"shards\").count(),\r\n    num_servers: var_84.count(),\r\n    num_default_servers: var_84.filter(function(var_87) {\r\n      return var_87(\"tags\").contains(\"default\");\r\n    }).count(),\r\n    num_available_shards: var_85(\"shards\").filter(function(var_88) {\r\n      return var_88(\"replicas\")(var_88(\"replicas\")(\"server\").indexesOf(var_88(\"primary_replica\"))(0))(\"state\").eq(\"ready\");\r\n    }).count(),\r\n    num_replicas: var_85(\"shards\").concatMap(function(var_89) {\r\n      return var_89(\"replicas\");\r\n    }).count(),\r\n    num_available_replicas: var_85(\"shards\").concatMap(function(var_90) {\r\n      return var_90(\"replicas\").filter({\r\n        state: \"ready\"\r\n      });\r\n    }).count(),\r\n    num_replicas_per_shard: var_85(\"shards\").map(function(var_91) {\r\n      return var_91(\"replicas\").count();\r\n    }).max(),\r\n    status: var_85(\"status\"),\r\n    shards_assignments: var_86(\"shards\").map(r.range(), function(var_92, var_93) {\r\n      return {\r\n        id: var_93.add(1),\r\n        num_keys: \"N/A\",\r\n        primary: {\r\n          id: var_84.filter({\r\n            name: var_92(\"primary_replica\")\r\n          }).nth(0)(\"id\"),\r\n          name: var_92(\"primary_replica\")\r\n        },\r\n        replicas: var_92(\"replicas\").filter(function(var_94) {\r\n          return var_94.ne(var_92(\"primary_replica\"));\r\n        }).map(function(var_95) {\r\n          return {\r\n            id: var_84.filter({\r\n              name: var_95\r\n            }).nth(0)(\"id\"),\r\n            name: var_95\r\n          };\r\n        })\r\n      };\r\n    }).coerceTo(\"array\"),\r\n    id: var_85(\"id\"),\r\n    indexes: null,\r\n    distribution: [],\r\n    total_keys: null\r\n  }).do(function(var_96) {\r\n    return r.branch(var_96(\"status\")(\"ready_for_writes\").not(), var_96, var_96.merge({\r\n      indexes: r.db(var_96(\"db\")).table(var_96(\"name\"), {\r\n        useOutdated: true\r\n      }).indexStatus().pluck(\"index\", \"ready\", \"blocks_processed\", \"blocks_total\").merge(function(var_97) {\r\n        return {\r\n          id: var_97(\"index\"),\r\n          db: var_96(\"db\"),\r\n          table: var_96(\"name\")\r\n        };\r\n      }),\r\n      distribution: r.db(var_96(\"db\")).table(var_96(\"name\"), {\r\n        useOutdated: true\r\n      }).info()(\"doc_count_estimates\").map(r.range(), function(var_98, var_99) {\r\n        return {\r\n          num_keys: var_98,\r\n          id: var_99\r\n        };\r\n      }).coerceTo(\"array\"),\r\n      total_keys: r.db(var_96(\"db\")).table(var_96(\"name\"), {\r\n        useOutdated: true\r\n      }).info()(\"doc_count_estimates\").sum(),\r\n      shards_assignments: var_96(\"shards_assignments\").map(r.range(), function(var_100, var_101) {\r\n        return var_100.merge({\r\n          num_keys: r.db(var_96(\"db\")).table(var_96(\"name\"), {\r\n            useOutdated: true\r\n          }).info()(\"doc_count_estimates\")(var_101)\r\n        });\r\n      }).coerceTo(\"array\")\r\n    }));\r\n  }).without(\"shards\"));\r\n})\r\n```\r\n "}}