{"id":1364,"date":"2019-06-12T00:00:00","date_gmt":"2019-06-12T00:00:00","guid":{"rendered":"https:\/\/en.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/"},"modified":"2024-08-22T07:45:32","modified_gmt":"2024-08-22T14:45:32","slug":"tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/","title":{"rendered":"TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability"},"content":{"rendered":"<p>Earlier this year, we reached out to Kyle Kingsbury, the creator of the Jepsen test suite, to conduct an official Jepsen test on TiDB. Even though we&#8217;ve done <a href=\"https:\/\/github.com\/pingcap\/jepsen\">our own Jepsen test<\/a> before, we thought it was important and valuable to work with Kyle directly to put TiDB through the Jepsen wringer. The results would not only benefit our team as we continue to drive the development of TiDB, but also our users, partners, and community.<\/p>\n<p>After several months of close collaboration with Kyle, we are excited that TiDB&#8217;s first official Jepsen Test report is published. You can read it <a href=\"https:\/\/jepsen.io\/analyses\/tidb-2.1.7\">HERE<\/a>.<\/p>\n<p><em><strong>tl;dr:<\/strong><\/em> Kyle tested the following versions of TiDB: 2.1.7, 2.1.8, 3.0.0-beta.1-40, and 3.0.0-rc.2. The latest version, 3.0.0-rc.2, passes Jepsen tests for snapshot isolation and single-key linearizability, and previous versions, TiDB 2.1.8 through 3.0.0-beta.1-40, also pass when the auto-retry mechanism is disabled, which was enabled by default. In 3.0.0-rc.2 and future versions of TiDB, the auto-retry mechanism is <em>disabled<\/em> by default.<\/p>\n<p><em>See the discussion of <a href=\"https:\/\/news.ycombinator.com\/item?id=20163975\">TiDB&#8217;s results on Hacker News<\/a>.<\/em><\/p>\n<p>In this blog post, we would like to provide some additional context to the results and share our thoughts on what&#8217;s next.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"To_Auto_Retry_or_Not_Auto_Retry\"><\/span>To (Auto) Retry or Not (Auto) Retry?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Although TiDB tries to be as compatible with MySQL as possible, its nature of a distributed system results in certain <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/mysql-compatibility\">differences<\/a>, one of which is the <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/transaction-overview\">transaction-model<\/a>. On the one hand, TiDB adopts an optimistic transaction model that detects conflicts only when transactions are committing, and the transaction will be rolled back if any conflicts are detected. On the other, being a distributed database means that transactions in TiDB will also be rolled back in the event of failures such as network partitions. However, many of the clients that our current customers use to talk to the databases are tailored for traditional databases like MySQL and Oracle, where commits rarely fail at the default isolation level so retry mechanisms are not needed. For these clients, when commits fail, they abort with errors as this is rendered as rare exceptions in these databases. Unlike traditional databases such as MySQL, in TiDB, if users want to avoid massive commit failures, they need to add mechanisms in their own business logic of their applications to handle the related errors, which is the last thing some customers are willing to do.<\/p>\n<p>To help our customers solve this problem, we provide a retry mechanism for those failed commits, which automatically retry the conflicting transactions in TiDB. This, however, has its downsides, which we didn&#8217;t clearly document. Thanks to Kyle and Jepsen tests for pointing this out, we have updated our <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/transaction-overview\">documentation<\/a> to keep the users aware of the difference and its possible consequences, and we <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/transaction-overview\">disabled the transaction retry mechanism by default<\/a> by changing the default value of <code>tidb_disable_txn_auto_retry<\/code> to <code>on<\/code>.<\/p>\n<p>Regarding the decision on whether to enable or disable the retry mechanism by default, we had gone through some changes. For the 3.0.0 GA version, we had originally planned to change the behavior of <code>tidb_disable_txn_auto_retry<\/code> to make it control the retry over transactions in write conflicts only, and we implemented the same in 3.0.0-beta.1-40. Unfortunately, though, we didn&#8217;t update the documentation to reflect the change in time. Thanks to Jepsen tests, we reflected on this change and believed this was not a good design. Therefore, in 3.0.0-rc2, we have adjusted the behavior of <code>tidb_disable_txn_auto_retry<\/code> to what it used to be prior to 3.0.0-beta.1-40, which is consistent with the <a href=\"https:\/\/docs-archive.pingcap.com\/tidb\/v3.1\/tidb-specific-system-variables#tidb_disable_txn_auto_retry\">documentation<\/a>.<\/p>\n<p>To disable or enable the transaction retry, users can configure both <code>tidb_retry_limit<\/code> \uadf8\ub9ac\uace0 <code>tidb_disable_txn_auto_retry<\/code>, with the following differences:<\/p>\n<ul>\n<li><strong>tidb_retry_limit = 0<\/strong> disables all forms of retries.<\/li>\n<li><strong>tidb_disable_txn_auto_retry = on<\/strong> only disables retries for explicit transactions, while those auto-committed transactions are still available for the auto-retry if conditions are met. For the auto-committed transactions, auto-retry would not break Snapshot Isolation.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"What_Else\"><\/span>What Else?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/jepsen.io\/analyses\/tidb-2.1.7\">Jepsen report<\/a> has also found some other issues, some of which are expected behaviors, and some are already fixed or being fixed. Here is more information about these issues:<\/p>\n<h3>Expected behavior: Crashes on Startup<\/h3>\n<p>This behavior is expected for TiDB server. We decided to adopt the fail-fast approach when we first designed TiDB, so that DBAs and operation engineers can quickly discover and identify issues at the deployment stage. If the startup fails because of errors with some processes, or the system restarts frequently after startup, an alerting system is available to inform the DBAs and operation engineers timely as well. In a production environment, we use <code>systemd<\/code> to ensure that the service can be restarted even if there are any issues.<\/p>\n<h3>Fixed in the 3.0.0-rc.2: Created Tables May Not Exist<\/h3>\n<p>This issue is fixed in 3.0.0-rc.2 and the <a href=\"https:\/\/github.com\/pingcap\/tidb\/pull\/10029\">pull request<\/a> to handle the related issue had been merged into the master branch before Kyle <a href=\"https:\/\/github.com\/pingcap\/tidb\/issues\/10410\">filed the issue<\/a>. The reason for this issue is that if a new cluster is created and multiple TiDB servers are bootstrapped, write conflicts occur because the bootstrapping process changes the global variables in one TiKV server. The issue is triggered only if all the following 3 conditions are met:<\/p>\n<ol>\n<li>The TiDB server in the DDL Owner node which handles the DDL job is not the first one to finish bootstrapping, and<\/li>\n<li>Write conflict occurs right before the very same TiDB server finishes bootstrapping, and<\/li>\n<li>When 2) happens, the TiDB server that finishes bootstrapping receives the DDL request<\/li>\n<\/ol>\n<p>The issue is fixed by ensuring that only the TiDB server who is the DDL Owner can process the bootstrap logic.<\/p>\n<h3>Fixing: Under-Replicated Regions<\/h3>\n<p>To ensure all regions in the cluster have enough replicas before providing services, we have added <a href=\"https:\/\/github.com\/pingcap\/pd\/pull\/1555\">a new API<\/a> to let users know quickly when a cluster is initialized and ready. This new API will be integrated into the deployment tools such as <a href=\"https:\/\/github.com\/pingcap\/tidb-ansible\/pull\/774\">TiDB Ansible<\/a> and TiDB Operator (a Kubernetes operator) so that we can identify a successful deployment only when the number of replicas is sufficient.<\/p>\n<h3>Documentation Fixes<\/h3>\n<p>Admittedly, there is always room for improvement in our documentation. Thanks to Jepsen tests, here are some immediate fixes per issues found in the test report:<\/p>\n<p><strong>Comment from Jepsen report:<\/strong> &#8220;The documentation is therefore somewhat confusing: some of its descriptions of repeatable read actually refer to repeatable read, and other parts refer to snapshot isolation.&#8221;<\/p>\n<ul>\n<li><strong>Fix:<\/strong> We have updated our <a href=\"https:\/\/docs-archive.pingcap.com\/tidb\/v3.1\/tidb-specific-system-variables#tidb_disable_txn_auto_retry\">transactional isolation<\/a> documentation to state that &#8220;TiDB allows some phantoms (P3), but does not allow strict phantoms (A3)&#8221; to clear the inconsistency implied in our documentation.<\/li>\n<\/ul>\n<p><strong style=\"font-size: revert; color: initial;\">Comments from Jepsen report:<\/strong><span style=\"font-size: revert; color: initial;\"> &#8220;TiDB&#8217;s automatic transaction retry mechanism was documented, but poorly'&#8221;, &#8220;The documentation for auto-retries was titled &#8220;Description of optimistic transactions&#8221;, and it simply said that the automatic-retry mechanism &#8220;cannot guarantee the final result is as expected&#8221; \u2014 but did not describe how.&#8221;<\/span><\/p>\n<ul>\n<li><strong>Fix:<\/strong> We have updated the TiDB <a href=\"https:\/\/docs-archive.pingcap.com\/tidb\/v3.1\/transaction-isolation-levels\">transaction documentation<\/a> to note that automatic transaction retry is disabled in TiDB by default and that enabling it can result in lost updates. Transactional anomalies caused by automatic retries are also introduced in detail.<\/li>\n<\/ul>\n<p><strong style=\"font-size: revert; color: initial;\">Comment from Jepsen report:<\/strong><span style=\"font-size: revert; color: initial;\"> &#8220;PingCAP&#8217;s official documentation did not describe what select &#8230; for update should have done.&#8221;<\/span><\/p>\n<ul>\n<li><strong>Fix:<\/strong> We have updated the description of <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/sql-statement-select#description-of-the-syntax-elements\"><code>Select for Update<\/code><\/a> with more detailed behaviors of the clause and its difference with other databases.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Next_Steps\"><\/span>Next Steps<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Building a distributional database and continuously improving it is a long stretching battle. Inspired by Jepsen tests, we are planning to continue to integrate Jepsen and other forms of tests more comprehensively across our processes and components.<\/p>\n<ul>\n<li>Integrate Jepsen tests with our own Continuous Integration (CI) system to make sure each commit passes Jepsen tests.<\/li>\n<li>Add more TiDB test cases to Jepsen tests, including membership changes, DDL, etc. We are also considering adding an independent Jepsen tests for TiKV.<\/li>\n<li>Support pessimistic transaction locking to make transactions behave more similarly to that in MySQL. TiDB 3.0.0-rc.2 has provided pessimistic transaction locking as an experimental support and users can configure whether to enable it. This for sure needs to pass Jepsen tests.<\/li>\n<li>Continuously amplify and improve our documentation to provide comprehensive, consistent, accurate, and user-friendly content and user experience.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>As we work to finalize the final steps of releasing TiDB 3.0 for General Availability in the coming weeks, the results of this Jepsen tests was incredibly helpful for us to build the strongest TiDB yet. It was a pleasure working with Kyle throughout this whole process, and we encourage you to read the full report <a href=\"http:\/\/jepsen.io\/analyses\/tidb-2.1.7\">HERE<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>TiDB&#8217;s first official Jepsen Test report is published. This post introduces some additional context to the test results and PingCAP&#8217;s thoughts on what&#8217;s next.<\/p>","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[6],"tags":[88],"class_list":["post-1364","post","type-post","status-publish","format-standard","hentry","category-engineering","tag-jepsen-test"],"acf":[],"featured_image_src":null,"author_info":{"display_name":"TiDB Team","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability<\/title>\n<meta name=\"description\" content=\"TiDB&#039;s first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what&#039;s next.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability\" \/>\n<meta property=\"og:description\" content=\"TiDB&#039;s first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what&#039;s next.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-12T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-22T14:45:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"714\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"TiDB Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TiDB Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\"},\"author\":{\"name\":\"TiDB Team\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74\"},\"headline\":\"TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability\",\"datePublished\":\"2019-06-12T00:00:00+00:00\",\"dateModified\":\"2024-08-22T14:45:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\"},\"wordCount\":1397,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"keywords\":[\"Jepsen Test\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\",\"name\":\"TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"datePublished\":\"2019-06-12T00:00:00+00:00\",\"dateModified\":\"2024-08-22T14:45:32+00:00\",\"description\":\"TiDB's first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what's next.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74\",\"name\":\"TiDB Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"TiDB Team\"},\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability","description":"TiDB's first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what's next.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/","og_locale":"ko_KR","og_type":"article","og_title":"TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability","og_description":"TiDB's first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what's next.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2019-06-12T00:00:00+00:00","article_modified_time":"2024-08-22T14:45:32+00:00","og_image":[{"width":1440,"height":714,"url":"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png","type":"image\/png"}],"author":"TiDB Team","twitter_card":"summary_large_image","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"TiDB Team","Est. reading time":"7\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/"},"author":{"name":"TiDB Team","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74"},"headline":"TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability","datePublished":"2019-06-12T00:00:00+00:00","dateModified":"2024-08-22T14:45:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/"},"wordCount":1397,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"keywords":["Jepsen Test"],"articleSection":["Engineering"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/","url":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/","name":"TiDB Passes Jepsen Test for Snapshot Isolation and Linearizability","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"datePublished":"2019-06-12T00:00:00+00:00","dateModified":"2024-08-22T14:45:32+00:00","description":"TiDB's first official Jepsen Test report is published. This post introduces some additional context to the test and thoughts on what's next.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74","name":"TiDB Team","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"TiDB Team"},"url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-passes-jepsen-test-for-snapshot-isolation-and-single-key-linearizability\/\"><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Engineering<\/div><\/div><h5 class=\"card-resource__title\">TiDB Passes Jepsen Test for Snapshot Isolation and Single-Key Linearizability<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/1364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=1364"}],"version-history":[{"count":6,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/1364\/revisions"}],"predecessor-version":[{"id":19034,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/1364\/revisions\/19034"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=1364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=1364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=1364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}