Migration from SPDY_BUG to SPDY_BUG_V2(bug_id).

Per go/gfe-bug-improvements GFE_BUGs are getting stable IDs to allow for monitoring and alerting. Existing SPDY_BUG instances are changed to have `spdy_bug_n_m` ID, where `n` is unique for each file, and `m` is a counter within each file, so we get `SPDY_BUG_V2(spdy_bug_123_2))`

PiperOrigin-RevId: 362310756
Change-Id: I3903233dbe00f5c0239dc0d7767044280e6fdf6e
diff --git a/spdy/core/fifo_write_scheduler.h b/spdy/core/fifo_write_scheduler.h
index 7bf8c4e..bd2cfec 100644
--- a/spdy/core/fifo_write_scheduler.h
+++ b/spdy/core/fifo_write_scheduler.h
@@ -67,7 +67,8 @@
     StreamIdType stream_id,
     const StreamPrecedenceType& precedence) {
   if (StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " already registered";
+    SPDY_BUG_V2(spdy_bug_36_1)
+        << "Stream " << stream_id << " already registered";
     return;
   }
   registered_streams_.emplace_hint(
@@ -79,7 +80,8 @@
 void FifoWriteScheduler<StreamIdType>::UnregisterStream(
     StreamIdType stream_id) {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_36_2)
+        << "Stream " << stream_id << " is not registered";
     return;
   }
   registered_streams_.erase(stream_id);
@@ -131,7 +133,8 @@
   if (it != registered_streams_.end()) {
     it->second.event_time = now_in_usec;
   } else {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_36_3)
+        << "Stream " << stream_id << " is not registered";
   }
 }
 
@@ -139,7 +142,8 @@
 int64_t FifoWriteScheduler<StreamIdType>::GetLatestEventWithPrecedence(
     StreamIdType stream_id) const {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_36_4)
+        << "Stream " << stream_id << " is not registered";
     return 0;
   }
   int64_t latest_event_time_us = 0;
@@ -164,7 +168,8 @@
 void FifoWriteScheduler<StreamIdType>::MarkStreamReady(StreamIdType stream_id,
                                                        bool /*add_to_front*/) {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_36_5)
+        << "Stream " << stream_id << " is not registered";
     return;
   }
   if (ready_streams_.find(stream_id) != ready_streams_.end()) {
@@ -193,7 +198,7 @@
 template <typename StreamIdType>
 StreamIdType FifoWriteScheduler<StreamIdType>::PopNextReadyStream() {
   if (ready_streams_.empty()) {
-    SPDY_BUG << "No ready streams available";
+    SPDY_BUG_V2(spdy_bug_36_6) << "No ready streams available";
     return 0;
   }
   auto it = ready_streams_.begin();
@@ -219,7 +224,8 @@
 bool FifoWriteScheduler<StreamIdType>::IsStreamReady(
     StreamIdType stream_id) const {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_36_7)
+        << "Stream " << stream_id << " is not registered";
     return false;
   }
   return ready_streams_.find(stream_id) != ready_streams_.end();
diff --git a/spdy/core/hpack/hpack_encoder.cc b/spdy/core/hpack/hpack_encoder.cc
index 7e924af..4aecc73 100644
--- a/spdy/core/hpack/hpack_encoder.cc
+++ b/spdy/core/hpack/hpack_encoder.cc
@@ -347,7 +347,7 @@
 
 void HpackEncoder::Encoderator::Next(size_t max_encoded_bytes,
                                      std::string* output) {
-  SPDY_BUG_IF(!has_next_)
+  SPDY_BUG_IF_V2(spdy_bug_61_1, !has_next_)
       << "Encoderator::Next called with nothing left to encode.";
   const bool enable_compression = encoder_->enable_compression_;
 
diff --git a/spdy/core/http2_frame_decoder_adapter.cc b/spdy/core/http2_frame_decoder_adapter.cc
index b9989c8..40ce2ff 100644
--- a/spdy/core/http2_frame_decoder_adapter.cc
+++ b/spdy/core/http2_frame_decoder_adapter.cc
@@ -476,8 +476,9 @@
   on_headers_called_ = true;
   ReportReceiveCompressedFrame(frame_header_);
   if (!visitor()) {
-    SPDY_BUG << "Visitor is nullptr, handling priority in headers failed."
-             << " priority:" << priority << " frame_header:" << frame_header_;
+    SPDY_BUG_V2(spdy_bug_1_1)
+        << "Visitor is nullptr, handling priority in headers failed."
+        << " priority:" << priority << " frame_header:" << frame_header_;
     return;
   }
   visitor()->OnHeaders(frame_header_.stream_id, kHasPriorityFields,
@@ -827,9 +828,10 @@
                      << " total remaining in the frame's payload.";
         db.AdvanceCursor(avail);
       } else {
-        SPDY_BUG << "Total remaining (" << total
-                 << ") should not be greater than the payload length; "
-                 << frame_header();
+        SPDY_BUG_V2(spdy_bug_1_2)
+            << "Total remaining (" << total
+            << ") should not be greater than the payload length; "
+            << frame_header();
       }
     }
   }
@@ -877,12 +879,13 @@
           DecodeBuffer tmp("", 0);
           DecodeStatus status = frame_decoder_->DecodeFrame(&tmp);
           if (status != DecodeStatus::kDecodeDone) {
-            SPDY_BUG << "Expected to be done decoding the frame, not "
-                     << status;
+            SPDY_BUG_V2(spdy_bug_1_3)
+                << "Expected to be done decoding the frame, not " << status;
             SetSpdyErrorAndNotify(SPDY_INTERNAL_FRAMER_ERROR, "");
           } else if (spdy_framer_error_ != SPDY_NO_ERROR) {
-            SPDY_BUG << "Expected to have no error, not "
-                     << SpdyFramerErrorToString(spdy_framer_error_);
+            SPDY_BUG_V2(spdy_bug_1_4)
+                << "Expected to have no error, not "
+                << SpdyFramerErrorToString(spdy_framer_error_);
           } else {
             ResetBetweenFrames();
           }
@@ -1077,7 +1080,8 @@
   SpdyHeadersHandlerInterface* handler =
       visitor()->OnHeaderFrameStart(stream_id());
   if (handler == nullptr) {
-    SPDY_BUG << "visitor_->OnHeaderFrameStart returned nullptr";
+    SPDY_BUG_V2(spdy_bug_1_5)
+        << "visitor_->OnHeaderFrameStart returned nullptr";
     SetSpdyErrorAndNotify(SpdyFramerError::SPDY_INTERNAL_FRAMER_ERROR, "");
     return;
   }
diff --git a/spdy/core/http2_priority_write_scheduler.h b/spdy/core/http2_priority_write_scheduler.h
index 2486453..dbfa005 100644
--- a/spdy/core/http2_priority_write_scheduler.h
+++ b/spdy/core/http2_priority_write_scheduler.h
@@ -221,11 +221,12 @@
   //   (e.g. SpdyClientDispatcher) modified to pass StreamPrecedence instances
   //   appropriate for protocol version under test.
   //
-  // SPDY_BUG_IF(precedence.is_spdy3_priority())
+  // SPDY_BUG_IF_V2(spdy_bug_8_1, precedence.is_spdy3_priority())
   //     << "Expected HTTP/2 stream dependency";
 
   if (StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " already registered";
+    SPDY_BUG_V2(spdy_bug_8_2)
+        << "Stream " << stream_id << " already registered";
     return;
   }
 
@@ -272,13 +273,13 @@
 void Http2PriorityWriteScheduler<StreamIdType>::UnregisterStream(
     StreamIdType stream_id) {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Cannot unregister root stream";
+    SPDY_BUG_V2(spdy_bug_8_3) << "Cannot unregister root stream";
     return;
   }
   // Remove the stream from table.
   auto it = all_stream_infos_.find(stream_id);
   if (it == all_stream_infos_.end()) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_4) << "Stream " << stream_id << " not registered";
     return;
   }
   std::unique_ptr<StreamInfo> stream_info(std::move(it->second));
@@ -335,7 +336,7 @@
   std::vector<StreamIdType> child_vec;
   const StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_5) << "Stream " << stream_id << " not registered";
   } else {
     child_vec.reserve(stream_info->children.size());
     for (StreamInfo* child : stream_info->children) {
@@ -353,10 +354,10 @@
   //   (e.g. SpdyClientDispatcher) modified to pass StreamPrecedence instances
   //   appropriate for protocol version under test.
   //
-  // SPDY_BUG_IF(precedence.is_spdy3_priority())
+  // SPDY_BUG_IF_V2(spdy_bug_8_6, precedence.is_spdy3_priority())
   //     << "Expected HTTP/2 stream dependency";
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Cannot set precedence of root stream";
+    SPDY_BUG_V2(spdy_bug_8_7) << "Cannot set precedence of root stream";
     return;
   }
 
@@ -393,7 +394,7 @@
     StreamIdType parent_id,
     bool exclusive) {
   if (stream_info->id == parent_id) {
-    SPDY_BUG << "Cannot set stream to be its own parent";
+    SPDY_BUG_V2(spdy_bug_8_8) << "Cannot set stream to be its own parent";
     return;
   }
   StreamInfo* new_parent = FindStream(parent_id);
@@ -457,12 +458,12 @@
     StreamIdType stream_id,
     int64_t now_in_usec) {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Cannot record event time for root stream";
+    SPDY_BUG_V2(spdy_bug_8_9) << "Cannot record event time for root stream";
     return;
   }
   StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_10) << "Stream " << stream_id << " not registered";
     return;
   }
   stream_info->last_event_time_usec = now_in_usec;
@@ -477,12 +478,12 @@
 int64_t Http2PriorityWriteScheduler<StreamIdType>::GetLatestEventWithPrecedence(
     StreamIdType stream_id) const {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Invalid argument: root stream";
+    SPDY_BUG_V2(spdy_bug_8_11) << "Invalid argument: root stream";
     return 0;
   }
   const StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_12) << "Stream " << stream_id << " not registered";
     return 0;
   }
   int64_t last_event_time_usec = 0;
@@ -503,12 +504,12 @@
 bool Http2PriorityWriteScheduler<StreamIdType>::ShouldYield(
     StreamIdType stream_id) const {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Invalid argument: root stream";
+    SPDY_BUG_V2(spdy_bug_8_13) << "Invalid argument: root stream";
     return false;
   }
   const StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_14) << "Stream " << stream_id << " not registered";
     return false;
   }
   if (HasReadyAncestor(*stream_info)) {
@@ -534,12 +535,12 @@
     StreamIdType stream_id,
     bool add_to_front) {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Cannot mark root stream ready";
+    SPDY_BUG_V2(spdy_bug_8_15) << "Cannot mark root stream ready";
     return;
   }
   StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_16) << "Stream " << stream_id << " not registered";
     return;
   }
   if (stream_info->ready) {
@@ -553,12 +554,12 @@
 void Http2PriorityWriteScheduler<StreamIdType>::MarkStreamNotReady(
     StreamIdType stream_id) {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Cannot mark root stream unready";
+    SPDY_BUG_V2(spdy_bug_8_17) << "Cannot mark root stream unready";
     return;
   }
   StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_18) << "Stream " << stream_id << " not registered";
     return;
   }
   if (!stream_info->ready) {
@@ -680,7 +681,7 @@
       return std::make_tuple(stream_info.id, stream_info.ToStreamPrecedence());
     }
   }
-  SPDY_BUG << "No ready streams";
+  SPDY_BUG_V2(spdy_bug_8_19) << "No ready streams";
   return std::make_tuple(
       kHttp2RootStreamId,
       StreamPrecedenceType(kHttp2RootStreamId, kHttp2MinStreamWeight, false));
@@ -695,12 +696,12 @@
 bool Http2PriorityWriteScheduler<StreamIdType>::IsStreamReady(
     StreamIdType stream_id) const {
   if (stream_id == kHttp2RootStreamId) {
-    SPDY_BUG << "Try to check whether root stream is ready";
+    SPDY_BUG_V2(spdy_bug_8_20) << "Try to check whether root stream is ready";
     return false;
   }
   const StreamInfo* stream_info = FindStream(stream_id);
   if (stream_info == nullptr) {
-    SPDY_BUG << "Stream " << stream_id << " not registered";
+    SPDY_BUG_V2(spdy_bug_8_21) << "Stream " << stream_id << " not registered";
     return false;
   }
   return stream_info->ready;
diff --git a/spdy/core/lifo_write_scheduler.h b/spdy/core/lifo_write_scheduler.h
index cbe53d2..1f13b88 100644
--- a/spdy/core/lifo_write_scheduler.h
+++ b/spdy/core/lifo_write_scheduler.h
@@ -98,7 +98,8 @@
     StreamIdType stream_id,
     const StreamPrecedenceType& precedence) {
   if (StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " already registered";
+    SPDY_BUG_V2(spdy_bug_13_1)
+        << "Stream " << stream_id << " already registered";
     return;
   }
   registered_streams_.emplace_hint(
@@ -110,7 +111,8 @@
 void LifoWriteScheduler<StreamIdType>::UnregisterStream(
     StreamIdType stream_id) {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_13_2)
+        << "Stream " << stream_id << " is not registered";
     return;
   }
   registered_streams_.erase(stream_id);
@@ -149,7 +151,8 @@
   if (it != registered_streams_.end()) {
     it->second.event_time = now_in_usec;
   } else {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_13_3)
+        << "Stream " << stream_id << " is not registered";
   }
 }
 
@@ -157,7 +160,8 @@
 int64_t LifoWriteScheduler<StreamIdType>::GetLatestEventWithPrecedence(
     StreamIdType stream_id) const {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_13_4)
+        << "Stream " << stream_id << " is not registered";
     return 0;
   }
   int64_t latest_event_time_us = 0;
@@ -177,7 +181,7 @@
 template <typename StreamIdType>
 StreamIdType LifoWriteScheduler<StreamIdType>::PopNextReadyStream() {
   if (ready_streams_.empty()) {
-    SPDY_BUG << "No ready streams available";
+    SPDY_BUG_V2(spdy_bug_13_5) << "No ready streams available";
     return 0;
   }
   auto it = --ready_streams_.end();
@@ -190,7 +194,8 @@
 void LifoWriteScheduler<StreamIdType>::MarkStreamReady(StreamIdType stream_id,
                                                        bool /*add_to_front*/) {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_13_6)
+        << "Stream " << stream_id << " is not registered";
     return;
   }
   if (ready_streams_.find(stream_id) != ready_streams_.end()) {
@@ -215,7 +220,8 @@
 bool LifoWriteScheduler<StreamIdType>::IsStreamReady(
     StreamIdType stream_id) const {
   if (!StreamRegistered(stream_id)) {
-    SPDY_BUG << "Stream " << stream_id << " is not registered";
+    SPDY_BUG_V2(spdy_bug_13_7)
+        << "Stream " << stream_id << " is not registered";
     return false;
   }
   return ready_streams_.find(stream_id) != ready_streams_.end();
diff --git a/spdy/core/priority_write_scheduler.h b/spdy/core/priority_write_scheduler.h
index c6824c6..1f7ed15 100644
--- a/spdy/core/priority_write_scheduler.h
+++ b/spdy/core/priority_write_scheduler.h
@@ -61,19 +61,21 @@
         << "Parent stream " << parent_id << " not registered";
 
     if (stream_id == root_stream_id_) {
-      SPDY_BUG << "Stream " << root_stream_id_ << " already registered";
+      SPDY_BUG_V2(spdy_bug_19_1)
+          << "Stream " << root_stream_id_ << " already registered";
       return;
     }
     StreamInfo stream_info = {precedence.spdy3_priority(), stream_id, false};
     bool inserted =
         stream_infos_.insert(std::make_pair(stream_id, stream_info)).second;
-    SPDY_BUG_IF(!inserted) << "Stream " << stream_id << " already registered";
+    SPDY_BUG_IF_V2(spdy_bug_19_2, !inserted)
+        << "Stream " << stream_id << " already registered";
   }
 
   void UnregisterStream(StreamIdType stream_id) override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_3) << "Stream " << stream_id << " not registered";
       return;
     }
     StreamInfo& stream_info = it->second;
@@ -141,7 +143,7 @@
                              int64_t now_in_usec) override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_4) << "Stream " << stream_id << " not registered";
       return;
     }
     PriorityInfo& priority_info = priority_infos_[it->second.priority];
@@ -152,7 +154,7 @@
   int64_t GetLatestEventWithPrecedence(StreamIdType stream_id) const override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_5) << "Stream " << stream_id << " not registered";
       return 0;
     }
     int64_t last_event_time_usec = 0;
@@ -185,14 +187,14 @@
                                StreamPrecedenceType(info->priority));
       }
     }
-    SPDY_BUG << "No ready streams available";
+    SPDY_BUG_V2(spdy_bug_19_6) << "No ready streams available";
     return std::make_tuple(0, StreamPrecedenceType(kV3LowestPriority));
   }
 
   bool ShouldYield(StreamIdType stream_id) const override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_7) << "Stream " << stream_id << " not registered";
       return false;
     }
 
@@ -219,7 +221,7 @@
   void MarkStreamReady(StreamIdType stream_id, bool add_to_front) override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_8) << "Stream " << stream_id << " not registered";
       return;
     }
     StreamInfo& stream_info = it->second;
@@ -239,7 +241,7 @@
   void MarkStreamNotReady(StreamIdType stream_id) override {
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
-      SPDY_BUG << "Stream " << stream_id << " not registered";
+      SPDY_BUG_V2(spdy_bug_19_9) << "Stream " << stream_id << " not registered";
       return;
     }
     StreamInfo& stream_info = it->second;
diff --git a/spdy/core/spdy_frame_builder.cc b/spdy/core/spdy_frame_builder.cc
index 5c93128..89db2d9 100644
--- a/spdy/core/spdy_frame_builder.cc
+++ b/spdy/core/spdy_frame_builder.cc
@@ -69,8 +69,9 @@
   QUICHE_DCHECK_EQ(0u, stream_id & ~kStreamIdMask);
   bool success = true;
   if (length_ > 0) {
-    SPDY_BUG << "SpdyFrameBuilder doesn't have a clean state when BeginNewFrame"
-             << "is called. Leftover length_ is " << length_;
+    SPDY_BUG_V2(spdy_bug_73_1)
+        << "SpdyFrameBuilder doesn't have a clean state when BeginNewFrame"
+        << "is called. Leftover length_ is " << length_;
     offset_ += length_;
     length_ = 0;
   }
@@ -90,7 +91,7 @@
   uint8_t raw_frame_type = SerializeFrameType(type);
   QUICHE_DCHECK(IsDefinedFrameType(raw_frame_type));
   QUICHE_DCHECK_EQ(0u, stream_id & ~kStreamIdMask);
-  SPDY_BUG_IF(length > kHttp2DefaultFramePayloadLimit)
+  SPDY_BUG_IF_V2(spdy_bug_73_2, length > kHttp2DefaultFramePayloadLimit)
       << "Frame length  " << length_ << " is longer than frame size limit.";
   return BeginNewFrameInternal(raw_frame_type, flags, stream_id, length);
 }
diff --git a/spdy/core/spdy_frame_builder.h b/spdy/core/spdy_frame_builder.h
index b18e9a0..3ed8ef0 100644
--- a/spdy/core/spdy_frame_builder.h
+++ b/spdy/core/spdy_frame_builder.h
@@ -66,9 +66,10 @@
 
   // Takes the buffer from the SpdyFrameBuilder.
   SpdySerializedFrame take() {
-    SPDY_BUG_IF(output_ != nullptr) << "ZeroCopyOutputBuffer is used to build "
-                                    << "frames. take() shouldn't be called";
-    SPDY_BUG_IF(kMaxFrameSizeLimit < length_)
+    SPDY_BUG_IF_V2(spdy_bug_39_1, output_ != nullptr)
+        << "ZeroCopyOutputBuffer is used to build "
+        << "frames. take() shouldn't be called";
+    SPDY_BUG_IF_V2(spdy_bug_39_2, kMaxFrameSizeLimit < length_)
         << "Frame length " << length_
         << " is longer than the maximum possible allowed length.";
     SpdySerializedFrame rv(buffer_.release(), length(), true);
diff --git a/spdy/core/spdy_framer.cc b/spdy/core/spdy_framer.cc
index 6b850c2..8b9d6ce 100644
--- a/spdy/core/spdy_framer.cc
+++ b/spdy/core/spdy_framer.cc
@@ -294,8 +294,9 @@
 size_t SpdyFramer::SpdyFrameIterator::NextFrame(ZeroCopyOutputBuffer* output) {
   const SpdyFrameIR& frame_ir = GetIR();
   if (!has_next_frame_) {
-    SPDY_BUG << "SpdyFramer::SpdyFrameIterator::NextFrame called without "
-             << "a next frame.";
+    SPDY_BUG_V2(spdy_bug_75_1)
+        << "SpdyFramer::SpdyFrameIterator::NextFrame called without "
+        << "a next frame.";
     return false;
   }
 
diff --git a/spdy/core/spdy_protocol.cc b/spdy/core/spdy_protocol.cc
index 9a5c229..ac51958 100644
--- a/spdy/core/spdy_protocol.cc
+++ b/spdy/core/spdy_protocol.cc
@@ -29,7 +29,8 @@
                 "The value of given priority shouldn't be smaller than highest "
                 "priority. Check this invariant explicitly.");
   if (priority > kV3LowestPriority) {
-    SPDY_BUG << "Invalid priority: " << static_cast<int>(priority);
+    SPDY_BUG_V2(spdy_bug_22_1)
+        << "Invalid priority: " << static_cast<int>(priority);
     return kV3LowestPriority;
   }
   return priority;
@@ -37,11 +38,11 @@
 
 int ClampHttp2Weight(int weight) {
   if (weight < kHttp2MinStreamWeight) {
-    SPDY_BUG << "Invalid weight: " << weight;
+    SPDY_BUG_V2(spdy_bug_22_2) << "Invalid weight: " << weight;
     return kHttp2MinStreamWeight;
   }
   if (weight > kHttp2MaxStreamWeight) {
-    SPDY_BUG << "Invalid weight: " << weight;
+    SPDY_BUG_V2(spdy_bug_22_3) << "Invalid weight: " << weight;
     return kHttp2MaxStreamWeight;
   }
   return weight;
@@ -92,7 +93,7 @@
 }
 
 SpdyFrameType ParseFrameType(uint8_t frame_type_field) {
-  SPDY_BUG_IF(!IsDefinedFrameType(frame_type_field))
+  SPDY_BUG_IF_V2(spdy_bug_22_4, !IsDefinedFrameType(frame_type_field))
       << "Frame type not defined: " << static_cast<int>(frame_type_field);
   return static_cast<SpdyFrameType>(frame_type_field);
 }