1. Java / Говнокод #13083

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    public CommandResult update() {
                CommandResult res = null;
                try {
                    long start = System.nanoTime();
                    res = _port.runCommand(_mongo.getDB("admin"), isMasterCmd);
                    long end = System.nanoTime();
                    float newPingMS = (end - start) / 1000000F;
                    if (!successfullyContacted)
                        _pingTimeMS = newPingMS;
                    else
                        _pingTimeMS = _pingTimeMS + ((newPingMS - _pingTimeMS) / latencySmoothFactor);
    
                    getLogger().log(Level.FINE, "Latency to " + _addr + " actual=" + newPingMS + " smoothed=" + _pingTimeMS);
    
                    successfullyContacted = true;
    
                    if (res == null) {
                        throw new MongoInternalException("Invalid null value returned from isMaster");
                    }
    
                    if (!_ok) {
                        getLogger().log(Level.INFO, "Server seen up: " + _addr);
                    }
                    _ok = true;
    
                    // max size was added in 1.8
                    if (res.containsField("maxBsonObjectSize")) {
                        _maxBsonObjectSize = (Integer) res.get("maxBsonObjectSize");
                    } else {
                        _maxBsonObjectSize = Bytes.MAX_OBJECT_SIZE;
                    }
                } catch (Exception e) {
                    if (!((_ok) ? true : (Math.random() > 0.1))) {
                        return res;
                    }
    
                    final StringBuilder logError = (new StringBuilder("Server seen down: ")).append(_addr);
    
                    if (e instanceof IOException) {
    
                        logError.append(" - ").append(IOException.class.getName());
    
                        if (e.getMessage() != null) {
                            logError.append(" - message: ").append(e.getMessage());
                        }
    
                        getLogger().log(Level.WARNING, logError.toString());
    
                    } else {
                        getLogger().log(Level.WARNING, logError.toString(), e);
                    }
                    _ok = false;
                }
    
                return res;
            }

    https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/mongodb/ConnectionStatus.java

    Незаметен.

    Запостил: serpinski, 31 Мая 2013

    Комментарии (7) RSS

    • Для невнимательных как я - самый яд в строчке 33.
      Ответить
      • Интересно только зачем serpinski выложил всю функцию, а не только эту строчку.
        Ответить
        • Тут все строчки друг друга стоят, имхо
          Ответить
    • Не всегда рапортовать об ошибке - это сильно. Вот иногда вроде умно написано, и паттерны, и логи и документация. И остро хочется автора выпилить из мира, желательно ложкой.
      Ответить
    • final не интересно, не интересно "Server seen down: "

      Фейсбук упал и лежит - совпадение?
      Ответить
    • стохастическое программирование
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий