Record the status message when clients reject websocket messages.
This commit is contained in:
		
							parent
							
								
									a4d0c17efd
								
							
						
					
					
						commit
						d2fcf68381
					
				| 
						 | 
					@ -13,6 +13,7 @@ import com.google.common.annotations.VisibleForTesting;
 | 
				
			||||||
import com.google.protobuf.ByteString;
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
import io.micrometer.core.instrument.Metrics;
 | 
					import io.micrometer.core.instrument.Metrics;
 | 
				
			||||||
import io.micrometer.core.instrument.Tag;
 | 
					import io.micrometer.core.instrument.Tag;
 | 
				
			||||||
 | 
					import org.apache.commons.lang3.StringUtils;
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
import org.whispersystems.textsecuregcm.controllers.MessageController;
 | 
					import org.whispersystems.textsecuregcm.controllers.MessageController;
 | 
				
			||||||
| 
						 | 
					@ -38,6 +39,7 @@ import org.whispersystems.websocket.WebSocketClient;
 | 
				
			||||||
import org.whispersystems.websocket.messages.WebSocketResponseMessage;
 | 
					import org.whispersystems.websocket.messages.WebSocketResponseMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.ws.rs.WebApplicationException;
 | 
					import javax.ws.rs.WebApplicationException;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
| 
						 | 
					@ -66,6 +68,7 @@ public class WebSocketConnection implements MessageAvailabilityListener, Displac
 | 
				
			||||||
  private static final String DISPLACEMENT_COUNTER_NAME         = name(WebSocketConnection.class, "displacement");
 | 
					  private static final String DISPLACEMENT_COUNTER_NAME         = name(WebSocketConnection.class, "displacement");
 | 
				
			||||||
  private static final String NON_SUCCESS_RESPONSE_COUNTER_NAME = name(WebSocketConnection.class, "clientNonSuccessResponse");
 | 
					  private static final String NON_SUCCESS_RESPONSE_COUNTER_NAME = name(WebSocketConnection.class, "clientNonSuccessResponse");
 | 
				
			||||||
  private static final String STATUS_CODE_TAG                   = "status";
 | 
					  private static final String STATUS_CODE_TAG                   = "status";
 | 
				
			||||||
 | 
					  private static final String STATUS_MESSAGE_TAG                = "message";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @VisibleForTesting
 | 
					  @VisibleForTesting
 | 
				
			||||||
  static final int MAX_DESKTOP_MESSAGE_SIZE = 1024 * 1024;
 | 
					  static final int MAX_DESKTOP_MESSAGE_SIZE = 1024 * 1024;
 | 
				
			||||||
| 
						 | 
					@ -150,8 +153,13 @@ public class WebSocketConnection implements MessageAvailabilityListener, Displac
 | 
				
			||||||
              sendDeliveryReceiptFor(message);
 | 
					              sendDeliveryReceiptFor(message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            final List<Tag> tags = List.of(Tag.of(STATUS_CODE_TAG, String.valueOf(response.getStatus())),
 | 
					            final List<Tag> tags = new ArrayList<>(List.of(Tag.of(STATUS_CODE_TAG, String.valueOf(response.getStatus())),
 | 
				
			||||||
                                           UserAgentTagUtil.getPlatformTag(client.getUserAgent()));
 | 
					                                                           UserAgentTagUtil.getPlatformTag(client.getUserAgent())));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // TODO Remove this once we've identified the cause of message rejections from desktop clients
 | 
				
			||||||
 | 
					            if (StringUtils.isNotBlank(response.getMessage())) {
 | 
				
			||||||
 | 
					              tags.add(Tag.of(STATUS_MESSAGE_TAG, response.getMessage()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Metrics.counter(NON_SUCCESS_RESPONSE_COUNTER_NAME, tags).increment();
 | 
					            Metrics.counter(NON_SUCCESS_RESPONSE_COUNTER_NAME, tags).increment();
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue