{"id":538,"date":"2014-03-28T13:19:53","date_gmt":"2014-03-28T13:19:53","guid":{"rendered":"https:\/\/gosqeng.test\/?p=538"},"modified":"2019-11-28T12:13:19","modified_gmt":"2019-11-28T12:13:19","slug":"dealing-corrupt-sstable-cassandra","status":"publish","type":"post","link":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra","title":{"rendered":"Dealing with a corrupt SSTable in Cassandra"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png\" alt=\"Corrupted SSTables in Cassandra Icon\"\/><\/p>\n<p>Corruption. It happens. And when it happens to Cassandra&#8217;s data files, one form it can take is of a corrupt SSTable file. This is exactly what happened to us in the last week, and I wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.<\/p>\n<h2>Important context<\/h2>\n<p>Before we start, there are a few important things to note:<\/p>\n<p>Firstly, we&#8217;re running Cassandra 1.2.8, so the output, commands and steps we took were performed using that version. If you&#8217;re running a different version of Cassandra, particularly &lt;= v1.1 or &gt;= v2.0 then it&#8217;s very possible that things will be different for you. In fact, hopefully the problem that caused the corruption in the first place will have been fixed in &gt; v1.2.8 and you don&#8217;t encounter any corruption at all!<\/p>\n<p>Secondly, we&#8217;re running Cassandra with a Replication Factor (RF) of 3, which ensures there are at least 3 separate nodes in the cluster with a copy of every piece of data. This is a recommended RF for Cassandra clusters and ensures that if you lose one node, you&#8217;ll still have a copy of all your data available from the remaining nodes. This is how we are able to recover the corrupted data gracefully. If your RF is less than 3, or you don&#8217;t have data redundancy available in some other way, then you may still lose data in the event of corruption. Additionally, you may still lose data if more than one of your nodes have corrupted the same data. In that case you&#8217;d probably need to restore from a snapshot which is a very different subject to what we cover in this post. If you&#8217;re running Cassandra but you aren&#8217;t sure about the implications of the Replication Factor, <a href=\"http:\/\/www.datastax.com\/documentation\/cassandra\/2.0\/cassandra\/architecture\/architectureDataDistributeReplication_c.html\" target=\"_blank\" rel=\"noopener noreferrer\">read up on it<\/a>.<\/p>\n<p>Thirdly, actual keyspace and column family names have been replaced with <code>keyspace<\/code> and <code>cf<\/code> respectively.<\/p>\n<p>With that said, let&#8217;s begin.<\/p>\n<h2>Detecting corruption<\/h2>\n<p>Cassandra regularly performs housekeeping on its data files, taking care of compaction, compression, writing new data to disk, and recording various database activities. If something&#8217;s awry with one of these files and it doesn&#8217;t work as normal, Cassandra will shout out about it in its log files:<\/p>\n<pre style=\"overflow-x:scroll;\">==&gt; \/var\/log\/cassandra\/system.log &lt;==\nERROR [CompactionExecutor:7] 2014-03-20 12:00:07,454 CassandraDaemon.java (line 192) Exception in thread Thread[CompactionExecutor:7,1,main]\norg.apache.cassandra.io.sstable.CorruptSSTableException: org.apache.cassandra.io.compress.CorruptBlockException: (\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-Data.db): corruption detected, chunk at 41674041 of length 47596.\nat org.apache.cassandra.io.compress.CompressedRandomAccessReader.reBuffer(CompressedRandomAccessReader.java:89)\nat org.apache.cassandra.io.compress.CompressedThrottledReader.reBuffer(CompressedThrottledReader.java:45)\nat org.apache.cassandra.io.util.RandomAccessReader.read(RandomAccessReader.java:355)\nat java.io.RandomAccessFile.readFully(RandomAccessFile.java:397)\n...<\/pre>\n<p>While investigating high load on this node, I spotted this scary looking exception in Cassandra&#8217;s main log file. It announces that in this particular case, Cassandra had trouble reading the keyspace-cf-ic-4698-Data.db file due to a corruption error. This file belongs to an SSTable, which stores the data for a column family. Cassandra isn&#8217;t recovering from this problem itself, so what can we do?<\/p>\n<h2>Take the node offline<\/h2>\n<p>At this point we&#8217;ve identified a problem with the node so it&#8217;d probably be a good idea to deactivate it from the live cluster as a precautionary measure but also to give us a bit more leeway for our repair work. \u00a0Do this ONLY if you have sufficient redundancy measures in place in your cluster (see important context above). It&#8217;s also a good idea to check the status of your apps (connection pools, reconnection handlers, etc.) and other nodes in the Cassandra cluster (load, logs, etc.) to make sure they&#8217;re able to handle this node going offline.<\/p>\n<p>Gracefully shut down Cassandra on the affected server:<\/p>\n<p><code>service cassandra stop<\/code><\/p>\n<p>Check that Cassandra has fully shut down cleanly.<\/p>\n<h2>Scrub the SSTable<\/h2>\n<p>Cassandra ships with a tool called <a href=\"http:\/\/www.datastax.com\/documentation\/cassandra\/1.2\/cassandra\/tools\/toolsSSTableScrub_t.html\" target=\"_blank\" rel=\"noopener noreferrer\"><code>sstablescrub<\/code><\/a>. In its description, it states you should &#8220;Use this tool to fix (throw away) corrupted tables&#8221; and before using it you should &#8220;try rebuild[ing] the tables using nodetool scrub&#8221;. I had tried a nodetool scrub but that failed with an SSTable corruption error. The offline <code>sstablescrub<\/code> wasn&#8217;t much different, also giving me a table corruption error, but you could try running this and seeing if it works in deleting the corrupted files for you:<\/p>\n<p>Note: Be careful which system user you run this command as. It rewrites the SSTables with permissions for that user so you may have to <code>chown<\/code> afterwards.<\/p>\n<p><code>sstablescrub keyspace cf<\/code><\/p>\n<pre style=\"overflow-x:scroll;\">Pre-scrub sstables snapshotted into snapshot pre-scrub-1395327387317\nScrubbing SSTableReader(path='\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-5273-Data.db')\n...\nScrubbing SSTableReader(path='\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-Data.db')\nWARNING: Non-fatal error reading row (stacktrace follows)\nWARNING: Row at 85207395 is unreadable; skipping to next\nWARNING: Non-fatal error reading row (stacktrace follows)\nWARNING: Row at 106721044 is unreadable; skipping to next\nError scrubbing SSTableReader(path='\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-Data.db'): org.apache.cassandra.io.compress.CorruptBlockException: (\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-Data.db): corruption detected, chunk at 52001433 of length 23873.\n...<\/pre>\n<p>This command rewrote all of the other valid SSTables to new files, leaving only the corrupted one in its original un-touched state and making it show up like a sore thumb in an <code>ls -alh<\/code> of the column family&#8217;s directory (all the other SSTable files got new consecutive -ic-xxxx suffixes).<\/p>\n<p>Since the command didn&#8217;t delete the corrupted SStables files, we&#8217;ve not got much choice but to clear them up ourselves.<\/p>\n<h2>Remove the corrupted SSTable<\/h2>\n<p>Grab the prefix of your SSTable files, in this case <code>\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-<\/code>, and move the files to a backup folder somewhere, just in case we need them later (we should already have a snapshot created by <code>sstablescrub<\/code> anyway):<\/p>\n<p><code><br \/>\nmkdir&nbsp;-p&nbsp;\/raid0\/backups\/corrupt-sstables<br \/>\nmv&nbsp;\/raid0\/cassandra\/data\/keyspace\/cf\/keyspace-cf-ic-4698-*&nbsp;\/raid0\/backups\/corrupt-sstables\/<br \/>\n<\/code><\/p>\n<h2>Repair<\/h2>\n<p>Now that we&#8217;ve effectively deleted a portion of the column family&#8217;s data on this node by removing the SSTable, we must start Cassandra back up on this server and run a repair on the column family. The repair should check the integrity of the data on the node and recover missing data from replicas stored by other nodes. The repair process takes a while (depending on the size of your data etc.) so perhaps you should run it in a terminal mutiplexer like <a href=\"http:\/\/tmux.sourceforge.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">tmux<\/a> or <a href=\"http:\/\/www.gnu.org\/software\/screen\/\" target=\"_blank\" rel=\"noopener noreferrer\">screen<\/a>, in case you need to close your connection to the server while it runs:<\/p>\n<p><code><br \/>\nservice&nbsp;cassandra&nbsp;start<br \/>\ntmux<br \/>\nnodetool&nbsp;repair&nbsp;keyspace&nbsp;cf<br \/>\n<\/code><\/p>\n<h2>Wrapping up<\/h2>\n<p>Once the repair process completes, verify that all of your logs are clear of corruption exceptions and that things are looking normal.<\/p>\n<p>To clean up, you might want to remove the snapshot created by <code>sstablescrub<\/code> using <code>nodetool&nbsp;clearsnapshot<\/code> and remove your backup files <code>rm&nbsp;-r&nbsp;\/raid0\/backups\/corrupt-sstables<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Corruption. It happens. And when it happens to Cassandra&#8217;s data files, one form it can take is of a corrupt&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1452],"tags":[],"class_list":["post-538","post","type-post","status-publish","format-standard","hentry","category-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.6 (Yoast SEO v19.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dealing with a corrupt SSTable in Cassandra - GoSquared Blog<\/title>\n<meta name=\"description\" content=\"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.\" \/>\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.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dealing with a corrupt SSTable in Cassandra\" \/>\n<meta property=\"og:description\" content=\"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra\" \/>\n<meta property=\"og:site_name\" content=\"GoSquared Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GoSquared\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-28T13:19:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-28T12:13:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TheDeveloper\" \/>\n<meta name=\"twitter:site\" content=\"@GoSquared\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geoff Wagstaff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\",\"name\":\"GoSquared\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"sameAs\":[\"https:\/\/instagram.com\/gosquaredteam\",\"https:\/\/www.linkedin.com\/company\/go-squared-ltd.\",\"https:\/\/www.facebook.com\/GoSquared\",\"https:\/\/twitter.com\/GoSquared\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"contentUrl\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"width\":1270,\"height\":250,\"caption\":\"GoSquared\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"name\":\"GoSquared Blog\",\"description\":\"Turn visitors into customers.\",\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage\",\"url\":\"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png\",\"contentUrl\":\"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage\",\"url\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra\",\"name\":\"Dealing with a corrupt SSTable in Cassandra - GoSquared Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage\"},\"datePublished\":\"2014-03-28T13:19:53+00:00\",\"dateModified\":\"2019-11-28T12:13:19+00:00\",\"description\":\"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.gosquared.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dealing with a corrupt SSTable in Cassandra\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage\"},\"author\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/56a3341790c8a0603f96066fb8d42448\"},\"headline\":\"Dealing with a corrupt SSTable in Cassandra\",\"datePublished\":\"2014-03-28T13:19:53+00:00\",\"dateModified\":\"2019-11-28T12:13:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage\"},\"wordCount\":913,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/56a3341790c8a0603f96066fb8d42448\",\"name\":\"Geoff Wagstaff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/66792d2e4d04406697b9a5f322664691590a386bc15b7146d143bbca07aa8889?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/66792d2e4d04406697b9a5f322664691590a386bc15b7146d143bbca07aa8889?s=96&d=mm&r=g\",\"caption\":\"Geoff Wagstaff\"},\"sameAs\":[\"https:\/\/twitter.com\/TheDeveloper\"],\"url\":\"https:\/\/www.gosquared.com\/blog\/author\/echo\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dealing with a corrupt SSTable in Cassandra - GoSquared Blog","description":"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.","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.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra","og_locale":"en_US","og_type":"article","og_title":"Dealing with a corrupt SSTable in Cassandra","og_description":"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.","og_url":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra","og_site_name":"GoSquared Blog","article_publisher":"https:\/\/www.facebook.com\/GoSquared","article_published_time":"2014-03-28T13:19:53+00:00","article_modified_time":"2019-11-28T12:13:19+00:00","og_image":[{"url":"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png"}],"twitter_card":"summary_large_image","twitter_creator":"@TheDeveloper","twitter_site":"@GoSquared","twitter_misc":{"Written by":"Geoff Wagstaff","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.gosquared.com\/blog\/#organization","name":"GoSquared","url":"https:\/\/www.gosquared.com\/blog\/","sameAs":["https:\/\/instagram.com\/gosquaredteam","https:\/\/www.linkedin.com\/company\/go-squared-ltd.","https:\/\/www.facebook.com\/GoSquared","https:\/\/twitter.com\/GoSquared"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","contentUrl":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","width":1270,"height":250,"caption":"GoSquared"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.gosquared.com\/blog\/#website","url":"https:\/\/www.gosquared.com\/blog\/","name":"GoSquared Blog","description":"Turn visitors into customers.","publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage","url":"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png","contentUrl":"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png"},{"@type":"WebPage","@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage","url":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra","name":"Dealing with a corrupt SSTable in Cassandra - GoSquared Blog","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage"},"datePublished":"2014-03-28T13:19:53+00:00","dateModified":"2019-11-28T12:13:19+00:00","description":"We wanted to share the steps we took to fix the corrupted data in a safe way, without losing any data.","breadcrumb":{"@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.gosquared.com\/blog"},{"@type":"ListItem","position":2,"name":"Dealing with a corrupt SSTable in Cassandra"}]},{"@type":"Article","@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#article","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage"},"author":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/56a3341790c8a0603f96066fb8d42448"},"headline":"Dealing with a corrupt SSTable in Cassandra","datePublished":"2014-03-28T13:19:53+00:00","dateModified":"2019-11-28T12:13:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#webpage"},"wordCount":913,"commentCount":6,"publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#primaryimage"},"thumbnailUrl":"https:\/\/static.gosquared.com\/images\/liquidicity\/14_03_25_cassandra_01.png","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.gosquared.com\/blog\/dealing-corrupt-sstable-cassandra#respond"]}]},{"@type":"Person","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/56a3341790c8a0603f96066fb8d42448","name":"Geoff Wagstaff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/66792d2e4d04406697b9a5f322664691590a386bc15b7146d143bbca07aa8889?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/66792d2e4d04406697b9a5f322664691590a386bc15b7146d143bbca07aa8889?s=96&d=mm&r=g","caption":"Geoff Wagstaff"},"sameAs":["https:\/\/twitter.com\/TheDeveloper"],"url":"https:\/\/www.gosquared.com\/blog\/author\/echo"}]}},"wps_subtitle":"Gracefully recover corrupted data","_links":{"self":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":0,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/tags?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}