GBWhatsAppAPK/issues/2022-04-13-test/index.html
2022-08-03 17:54:53 +00:00

661 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Post-mortem
At approximately 14:01, a Redis instance acting as the primary for a highly-available cluster used by our API services was migrated automatically by Googles Cloud Platform. This migration caused the node to incorrectly drop offline, forcing the cluster to rebalance and trigger known issues with the way our API instances handle Redis failover. After resolving this partial outage, unnoticed issues on other services caused a cascading failure through Example Chat Apps real time system.">
<title>Unavailable Guilds &amp; Connection Issues | Test4</title>
<link rel="canonical" href="https://example.com/issues/2018-04-13-unavailable-guilds-connection-issues/">
<link rel="alternate" type="application/json" href="https://example.com/issues/2018-04-13-unavailable-guilds-connection-issues/index.json" title="Test4" />
<meta name="generator" content="cState v5.3 - https://github.com/cstate/cstate">
<meta name="theme-color" content="#0a0c0f">
<script>
var themeBrandColor = '#0a0c0f';
var themeOkColor = '#008000';
var themeNoticeColor = '#24478f';
var themeDisruptedColor = '#cc4400';
var themeDownColor = '#e60000';
</script>
<style>
html, body {
margin: 0;
background: #fff;
color: #4d4d4d;
font: 100%/1.5 "Inter", "Inter UI", BlinkMacSystemFont, -apple-system, "San Francisco Text", "Roboto", "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
box-sizing: border-box;
-webkit-tap-highlight-color: rgba(0,0,0, 0.25);
}
::selection { background: #B4D5FF; }
*, *:before, *:after {
box-sizing: inherit;
}
a {
text-decoration: none;
color: #000;
border-bottom: 1px dotted currentColor;
}
a:hover { border-bottom-style: solid; }
a:active { position: relative; top: 2px; }
hr {
border: 0;
border-bottom: 1px solid #ccc;
margin: 24px 0;
}
h1 {
font-size: 40px;
line-height: 1;
}
h2 { font-size: 26px; }
h3 { font-size: 20px; }
h4 { font-size: 18px; }
h1, h2, h4 {
font-weight: normal;
color: #000;
font-family: "Inter", "Inter UI", "Segoe UI", BlinkMacSystemFont, -apple-system, "San Francisco Display", "Roboto", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
letter-spacing: -0.4px;
}
h3 {
margin: 0;
color: #000;
}
img {
border: 0;
width: 100%;
height: auto;
}
.hidden { display: none; }
a.no-underline { border-bottom: 0; }
.headline { font-size: 20px; }
.bold { color: #000; }
.hinted { color: #6d6d6d; }
.faded { color: #6d6d6d; }
.clean { margin: 0; }
.ok { color: #008000; }
.warning { color: #cc4400; }
.error { color: #e60000; }
.contain {
max-width: 640px;
margin: 16px auto;
padding: 16px;
}
.contain--more { max-width: 680px; }
.center { text-align: center; }
.right { text-align: right; }
.padding-s { padding: 6px; }
.padding { padding: 12px; }
.clicky { cursor: pointer; }
.link-style { border: none; }
.span-icon {
float: right;
margin-left: 16px;
}
.js .category--open .category__closed-marker { display: none; }
.js .category--closed .components { display: none; }
.js .category--closed .category__open-marker { display: none; }
.js .hidden-with-js { display: none; }
.hide-without-js { display: none; }
.js span.hide-without-js { display: inline; }
.js div.hide-without-js { display: block; }
.date {
display: block;
margin-top: 12px;
color: #666;
font-variant: small-caps;
}
.tag {
display: inline-block;
padding: 4px 8px;
margin-right: 4px;
margin-bottom: 2px;
background: #eee;
}
.tag:hover { background: #ddd; }
.header {
padding: 8px 0;
background: #0a0c0f;
}
.header a {
color: #fff;
font-size: 14px;
font-variant: small-caps;
}
.header a h1 { color: #fff; }
.header__logo img {
height: auto;
width: 320px;
}
.header__logo--small img {
height: auto;
width: 160px;
}
.header--large { padding: 16px; }
.header--large a { font-size: 20px; }
.footer {
padding: 10px;
background: #f5f5f5;
}
.footer__copyright {
display: block;
font-variant: small-caps;
}
.footer__copyright a, a.header__logo {
border-bottom: 0;
}
.summary {
padding: 16px;
color: #fff;
}
.summary__date:hover {
color: #ccc;
}
.summary__date:hover:after {
content: ' ⟳ ';
color: #fff;
}
.components {
border: 2px solid #ddd;
border-bottom: 0;
}
.component {
color: #000;
padding: 16px;
border-bottom: 2px solid #ddd;
}
.tooltip { cursor: pointer; position: relative; }
.tooltip__text { display: none; }
.tooltip:hover .tooltip__text,
.tooltip:active .tooltip__text {
display: block;
position: absolute;
top: 0;
left: 24px;
background: #181818;
color: #fff;
z-index: 50;
padding: 8px;
border: 2px solid #242424;
font-size: 14px;
color: #ccc;
width: 320px;
height: auto;
}
@media (max-width: 640px) {
.tooltip:hover .tooltip__text,
.tooltip:active .tooltip__text {
width: 50vw;
}
}
.tabs { border-bottom: 1px solid #ccc; }
.tabs--inner { padding: 0 16px; margin: 0 auto; }
a.tab { display: inline-table; }
.tab--current {
border: 1px solid #ccc;
border-bottom-color: #fff;
padding: 12px 18px;
position: relative;
top: 1px;
}
.tab--other {
border: 0;
padding: 12px 18px;
position: relative;
top: 1px;
color: #757575;
}
.tab--other:hover { color: #000; }
.issue { display: block; padding: 14px 24px; }
.issue:hover, .category__head:hover { background: #f5f5f5; }
.issue:active, .category__head:active { background: #eee; }
.issue h3 { line-height: 1.25; }
.category__head { margin-top: 20px; }
.archive__head { padding: 20px; background: #f5f5f5; }
.status-ok .summary { background: #008000; }
.status-disrupted .summary, .change-header-color.status-disrupted .header { background: #cc4400; }
.status-down .summary, .change-header-color.status-down .header { background: #e60000; }
.status-notice .summary, .change-header-color.status-notice .header { background: #24478f; }
.announcement-box .padding {
padding: 16px;
}
.status-disrupted .announcement-box { border: 2px solid #cc4400; }
.status-down .announcement-box { border: 2px solid #e60000; }
.status-notice .announcement-box { border: 2px solid #24478f; }
.status-disrupted .announcement-box,
.status-down .announcement-box,
.status-notice .announcement-box { border-top: 0; }
.category--open .category-status { display: none; }
.component-status, .category-status { float: right; }
.component[data-status="ok"] .component-status,
.category__head[data-status="ok"] .category-status
{ color: #008000; }
.component[data-status="disrupted"] .component-status,
.category__head[data-status="disrupted"] .category-status
{ color: #cc4400; }
.component[data-status="notice"] .component-status,
.category__head[data-status="notice"] .category-status
{ color: #24478f; }
.component[data-status="down"] .component-status,
.category__head[data-status="down"] .category-status
{ color: #e60000; }
@media (min-width: 640px) {
.float-right {
float: right;
display: inline;
}
}
@media (prefers-color-scheme: dark) {
html, body { background: #181a1b; color: #ccc9c1; }
h1, h2, h3, h4, a, .bold { color: #fafafa; }
hr { border-bottom-color: #3d3d3d; }
.footer { background: #1b1d1e; }
.components {
border: 2px solid #ddd;
border-bottom: 0;
border-color: #3a3a3a;
}
.component {
border-bottom: 2px solid #ddd;
color: #e8e6e3;
border-bottom-color: #3a3a3a;
}
.tabs { border-bottom-color: #3d3d3d; }
.tab--current {
border-color: #3d3d3d;
border-bottom-color: #181a1b;
}
.tab--other { color: #757575; }
.tab--other:hover { color: #fff; }
.date { color: #c3bfb6; }
.tag, .archive__head { background-color: #1d1f20; }
.tag:hover { background: #222; }
.issue:hover,
.category__head:hover { background-color: #212121; }
.hinted, .faded { color: #c1bcb3; }
.error { color: #ff4242; }
.warning {color: #ffde7f; }
.ok { color: #7fff7f; }
.component[data-status="ok"] .component-status,
.category__head[data-status="ok"] .category-status
{ color: #7fff7f; }
.component[data-status="disrupted"] .component-status,
.category__head[data-status="disrupted"] .category-status
{ color: #ffde7f; }
.component[data-status="notice"] .component-status,
.category__head[data-status="notice"] .category-status
{ color: #83a4e8; }
.component[data-status="down"] .component-status,
.category__head[data-status="down"] .category-status
{ color: #ff8181; }
}
</style>
</head>
<body class="issues single">
<div class="contain">
<a href="https://example.com">← Go back to <em>Test4</em></a>
</div>
<div class="contain">
<div class="article">
<h1 class="clean">
Unavailable Guilds &amp; Connection Issues
</h1>
<small class="date">
April 13, 2018 at 3:54 PM UTC
</small>
<p><small>
<a href="/affected/api/" class="tag no-underline">API</a>
<a href="/affected/media-proxy/" class="tag no-underline">Media Proxy</a>
</small></p>
<div class="warning tooltip">
<strong>
Resolved after
1h
36m of downtime.
</strong>
<span class="tooltip__text">
April 13, 2018 at 5:30 PM UTC
</span>
</div>
<hr>
<p><em>Post-mortem</em></p>
<p>At approximately 14:01, a Redis instance acting as the primary for a highly-available cluster used by our API services was migrated automatically by Googles Cloud Platform. This migration caused the node to incorrectly drop offline, forcing the cluster to rebalance and trigger known issues with the way our API instances handle Redis failover. After resolving this partial outage, unnoticed issues on other services caused a cascading failure through Example Chat Apps real time system. These issues caused enough critical impact that Example Chat Apps engineering team was forced to fully restart the service, reconnecting millions of clients over a period of 20 minutes.</p>
<hr>
<p><em>Update</em> - A fix has been implemented and we are monitoring the results. Looks like this has been fixed.
<span class="faded">(17:30 UTC — Apr 13)</span>
</p>
<p><em>Monitoring</em> - After hitting the ole reboot button Example Chat App is now recovering. We&rsquo;re going to continue to monitor as everyone reconnects.
<span class="faded">(16:50 UTC — Apr 13)</span>
</p>
<p><em>Investigating</em> - We&rsquo;re aware of users experiencing unavailable guilds and issues when attempting to connect. We&rsquo;re currently investigating.
<span class="faded">(15:54 UTC — Apr 13)</span>
</p>
</div>
<div class="padding"></div>
</div>
<div class="contain center">
<p>Last updated:
February 29, 2020 at 5:16 PM UTC
</p>
</div>
<script type="text/javascript">
console.log('cState v5.3 - https://github.com/cstate/cstate');
document.getElementsByTagName('html')[0].className = 'js';
if (document.body.className === 'change-header-color') {
if (document.body.className === 'status-down') {
document.querySelector('meta[name=theme-color]').setAttribute('content', themeDownColor);
} else if (document.body.className === 'status-disrupted') {
document.querySelector('meta[name=theme-color]').setAttribute('content', themeDisruptedColor);
} else {
document.querySelector('meta[name=theme-color]').setAttribute('content', themeNoticeColor);
}
}
if (window.location.hash.match('access_token')) {
document.location.pathname = '/admin';
}
if (window.location.hash.match('invite_token')) {
document.location.pathname = '/admin';
}
if (window.location.hash.match('confirmation_token')) {
document.location.pathname = '/admin';
}
if (window.location.hash.match('email_change_token')) {
document.location.pathname = '/admin';
}
if (window.location.hash.match('recovery_token')) {
document.location.pathname = '/admin';
}
function toggleCategoryHead(el) {
if (el.parentNode.className == 'category category--open category--titled') {
el.parentNode.className = 'category category--closed category--titled';
} else {
el.parentNode.className = 'category category--open category--titled';
}
}
function timeSince(date) {
var seconds = Math.floor((new Date() - date) / 1000);
var interval = Math.floor(seconds / 31536000);
if (interval > 1) {
return interval + ' years';
}
interval = Math.floor(seconds / 2592000);
if (interval > 1) {
return interval + ' months';
}
interval = Math.floor(seconds / 86400);
if (interval > 1) {
return interval + 'd';
}
interval = Math.floor(seconds / 3600);
if (interval > 1) {
return interval + 'h';
}
interval = Math.floor(seconds / 60);
if (interval > 1) {
return interval + ' min';
}
if(Math.floor(seconds) < 0) {
return Math.floor(seconds);
}
return Math.floor(seconds) + 's';
}
function updateRelativeTimes() {
var elements = document.querySelectorAll('.relative-time');
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var time = Date.parse(element.getAttribute('title'));
var html = element.getAttribute('data-time-prefix') || '';
if (!time) {
time = element.innerText;
element.setAttribute('title', time || new Date);
html += 'just now';
} else if (timeSince(time) < 0) {
html = element.innerText;
} else {
html += timeSince(time) + ' ago';
}
html += element.getAttribute('data-time-suffix') || '';
element.innerHTML = html.trim();
}
}
updateRelativeTimes();
setInterval(updateRelativeTimes, 5000);
</script>
<div class="footer">
<div class="contain">
<p><strong class="bold">&copy; Test4, 2022</strong>
&nbsp;&nbsp; <a href="#">Back to top</a>
</p>
<p>We continuously monitor the status of our services and if there are any interruptions, a note will be posted here.</p>
<small class="footer__copyright faded">Powered by <a href="https://github.com/cstate/cstate"><b>cState</b></a></small>
<hr>
<p class="hinted">
<small>
Subscribe via RSS —
<a href="https://example.com/index.xml" class="no-underline">to all updates</a>
</small>
</p>
</div>
</div>
</body>
</html>