Commit ca1d1c38 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge remote-tracking branch 'ffmancera/github/bug24501'

parents d8c0c62c ac9eebd6
Loading
Loading
Loading
Loading

changes/ticket24501

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor features (logging): 
    - Make the log more quantitative when we hit MaxMemInQueues threshold
      exposing some values. Closes ticket 24501.
+9 −3
Original line number Diff line number Diff line
@@ -2404,9 +2404,15 @@ circuits_handle_oom(size_t current_allocation)
  int n_circuits_killed=0;
  int n_dirconns_killed=0;
  uint32_t now_ts;
  log_notice(LD_GENERAL, "We're low on memory.  Killing circuits with "
  log_notice(LD_GENERAL, "We're low on memory (cell queues total alloc: %zu,"
             " buffer total alloc: %zu, tor compress total alloc: %zu,"
             " rendezvous cache total alloc: %zu). Killing circuits with"
             " over-long queues. (This behavior is controlled by"
             "MaxMemInQueues.)");
             " MaxMemInQueues.)",
             cell_queues_get_total_allocation(),
             buf_get_total_allocation(),
             tor_compress_get_total_allocation(),
             rend_cache_get_total_allocation());

  {
    size_t mem_target = (size_t)(get_options()->MaxMemInQueues *
+1 −1
Original line number Diff line number Diff line
@@ -2596,7 +2596,7 @@ packed_cell_mem_cost(void)
}

/* DOCDOC */
STATIC size_t
size_t
cell_queues_get_total_allocation(void)
{
  return total_cells_allocated * packed_cell_mem_cost();
+1 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ extern uint64_t stats_n_relay_cells_delivered;

int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
                               cell_direction_t cell_direction);
size_t cell_queues_get_total_allocation(void);

void relay_header_pack(uint8_t *dest, const relay_header_t *src);
void relay_header_unpack(relay_header_t *dest, const uint8_t *src);
@@ -114,7 +115,6 @@ STATIC int connection_edge_process_resolved_cell(edge_connection_t *conn,
STATIC packed_cell_t *packed_cell_new(void);
STATIC packed_cell_t *cell_queue_pop(cell_queue_t *queue);
STATIC destroy_cell_t *destroy_cell_queue_pop(destroy_cell_queue_t *queue);
STATIC size_t cell_queues_get_total_allocation(void);
STATIC int cell_queues_check_size(void);
#endif /* defined(RELAY_PRIVATE) */