{"record":{"id":"209b2e03bf62fc55","repo":"apache/cassandra","slug":"has-dropped-hints-because-node-is-down-past","errorCode":null,"errorMessage":"{} has {} dropped hints, because node is down past configured hint window.","messagePattern":"(.+?) has (.+?) dropped hints, because node is down past configured hint window\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/metrics/HintedHandoffMetrics.java","lineNumber":73,"sourceCode":"\n    public void incrCreatedHints(InetAddressAndPort address)\n    {\n        createdHintCounts.get(address).inc();\n    }\n\n    public void incrPastWindow(InetAddressAndPort address)\n    {\n        notStored.get(address).mark();\n    }\n\n    public void log()\n    {\n        for (Entry<InetAddressAndPort, DifferencingCounter> entry : notStored.asMap().entrySet())\n        {\n            long difference = entry.getValue().difference();\n            if (difference == 0)\n                continue;\n            logger.warn(\"{} has {} dropped hints, because node is down past configured hint window.\", entry.getKey(), difference);\n            SystemKeyspace.updateHintsDropped(entry.getKey(), nextTimeUUID(), (int) difference);\n        }\n    }\n\n    public static class DifferencingCounter\n    {\n        private final Counter meter;\n        private long reported = 0;\n\n        public DifferencingCounter(InetAddressAndPort address)\n        {\n            //This changes the name of the metric, people can update their monitoring when upgrading?\n            this.meter = Metrics.counter(factory.createMetricName(\"Hints_not_stored-\" + address.toString().replace(':', '.')));\n        }\n\n        public long difference()\n        {\n            long current = meter.getCount();","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/metrics/HintedHandoffMetrics.java#L55-L91","documentation":"HintedHandoffMetrics.log warns, once per logged interval, that hints destined for a node were discarded because the node was down longer than max_hint_window_in_ms. The data those hints would have carried must be repaired by other means.","triggerScenarios":"Thrown at src/java/org/apache/cassandra/metrics/HintedHandoffMetrics.java:73 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run repair (e.g. nodetool repair) on the affected ranges to restore consistency.","Increase max_hint_window_in_ms if long planned outages should keep hints.","Investigate why the endpoint was down past the hint window."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}