Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
sevdokimov-gg committed Jul 24, 2015
1 parent 32f84c1 commit 45aa598
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 21 deletions.
Expand Up @@ -18,9 +18,9 @@
package org.apache.ignite.internal.util;

import org.apache.ignite.*;
import org.apache.ignite.internal.util.lang.*;
import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.internal.util.typedef.internal.*;
import org.apache.ignite.lang.*;
import org.jetbrains.annotations.*;
import org.jsr166.*;

Expand All @@ -42,7 +42,7 @@ public class GridLogThrottle {
private static int throttleTimeout = DFLT_THROTTLE_TIMEOUT;

/** Errors. */
private static final ConcurrentMap<IgniteBiTuple<Class<? extends Throwable>, String>, Long> errors =
private static final ConcurrentMap<GridTuple3<Class<? extends Throwable>, String, Boolean>, Long> errors =
new ConcurrentHashMap8<>();

/**
Expand Down Expand Up @@ -73,7 +73,7 @@ public static long throttleTimeout() {
public static void error(@Nullable IgniteLogger log, @Nullable Throwable e, String msg) {
assert !F.isEmpty(msg);

log(log, e, msg, null, LogLevel.ERROR);
log(log, e, msg, null, LogLevel.ERROR, false);
}

/**
Expand All @@ -86,7 +86,20 @@ public static void error(@Nullable IgniteLogger log, @Nullable Throwable e, Stri
public static void warn(@Nullable IgniteLogger log, @Nullable Throwable e, String msg) {
assert !F.isEmpty(msg);

log(log, e, msg, null, LogLevel.WARN);
log(log, e, msg, null, LogLevel.WARN, false);
}

/**
* Logs warning if needed.
*
* @param log Logger.
* @param e Error (optional).
* @param msg Message.
*/
public static void warn(@Nullable IgniteLogger log, @Nullable Throwable e, String msg, boolean quite) {
assert !F.isEmpty(msg);

log(log, e, msg, null, LogLevel.WARN, quite);
}

/**
Expand All @@ -100,7 +113,7 @@ public static void warn(@Nullable IgniteLogger log, @Nullable Throwable e, Strin
public static void warn(@Nullable IgniteLogger log, @Nullable Throwable e, String longMsg, @Nullable String shortMsg) {
assert !F.isEmpty(longMsg);

log(log, e, longMsg, shortMsg, LogLevel.WARN);
log(log, e, longMsg, shortMsg, LogLevel.WARN, false);
}

/**
Expand All @@ -112,7 +125,7 @@ public static void warn(@Nullable IgniteLogger log, @Nullable Throwable e, Strin
public static void info(@Nullable IgniteLogger log, String msg) {
assert !F.isEmpty(msg);

log(log, null, msg, null, LogLevel.INFO);
log(log, null, msg, null, LogLevel.INFO, false);
}

/**
Expand All @@ -133,12 +146,12 @@ public static void clear() {
*/
@SuppressWarnings({"RedundantTypeArguments"})
private static void log(@Nullable IgniteLogger log, @Nullable Throwable e, String longMsg, @Nullable String shortMsg,
LogLevel level) {
LogLevel level, boolean quiet) {
assert !F.isEmpty(longMsg);

IgniteBiTuple<Class<? extends Throwable>, String> tup =
e != null ? F.<Class<? extends Throwable>, String>t(e.getClass(), e.getMessage()) :
F.<Class<? extends Throwable>, String>t(null, longMsg);
GridTuple3<Class<? extends Throwable>, String, Boolean> tup =
e != null ? F.<Class<? extends Throwable>, String, Boolean>t(e.getClass(), e.getMessage(), quiet) :
F.<Class<? extends Throwable>, String, Boolean>t(null, longMsg, quiet);

while (true) {
Long loggedTs = errors.get(tup);
Expand All @@ -147,7 +160,7 @@ private static void log(@Nullable IgniteLogger log, @Nullable Throwable e, Strin

if (loggedTs == null || loggedTs < curTs - throttleTimeout) {
if (replace(tup, loggedTs, curTs)) {
level.doLog(log, longMsg, shortMsg, e);
level.doLog(log, longMsg, shortMsg, e, quiet);

break;
}
Expand All @@ -164,7 +177,7 @@ private static void log(@Nullable IgniteLogger log, @Nullable Throwable e, Strin
* @param newStamp New timestamp.
* @return {@code True} if throttle value was replaced.
*/
private static boolean replace(IgniteBiTuple<Class<? extends Throwable>, String> t, @Nullable Long oldStamp,
private static boolean replace(GridTuple3<Class<? extends Throwable>, String, Boolean> t, @Nullable Long oldStamp,
Long newStamp) {
assert newStamp != null;

Expand All @@ -182,10 +195,13 @@ protected GridLogThrottle() {
// No-op.
}

/**
*
*/
private enum LogLevel {
/** Error level. */
ERROR {
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e) {
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e, boolean quiet) {
if (e != null)
U.error(log, longMsg, e);
else
Expand All @@ -195,14 +211,17 @@ private enum LogLevel {

/** Warn level. */
WARN {
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e) {
U.warn(log, longMsg, F.isEmpty(shortMsg) ? longMsg : shortMsg);
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e, boolean quiet) {
if (quiet)
U.quietAndWarn(log, longMsg, F.isEmpty(shortMsg) ? longMsg : shortMsg);
else
U.warn(log, longMsg, F.isEmpty(shortMsg) ? longMsg : shortMsg);
}
},

/** Info level. */
INFO {
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e) {
@Override public void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e, boolean quiet) {
if (log.isInfoEnabled())
log.info(longMsg);
}
Expand All @@ -216,6 +235,6 @@ private enum LogLevel {
* @param shortMsg Short message.
* @param e Exception to attach to log.
*/
public abstract void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e);
public abstract void doLog(IgniteLogger log, String longMsg, String shortMsg, Throwable e, boolean quiet);
}
}
Expand Up @@ -384,7 +384,8 @@ class ClientImpl extends TcpDiscoveryImpl {
if (timeout > 0 && (U.currentTimeMillis() - startTime) > timeout)
return null;

U.warn(log, "No addresses registered in the IP finder (will retry in 2000ms): " + spi.ipFinder);
LT.warn(log, null, "No addresses registered in the IP finder (will retry in 2000ms): "
+ spi.ipFinder, true);

Thread.sleep(2000);
}
Expand Down Expand Up @@ -435,7 +436,7 @@ class ClientImpl extends TcpDiscoveryImpl {
return null;

LT.warn(log, null, "Failed to connect to any address from IP finder (will retry to join topology " +
"in 2000ms): " + addrs0);
"in 2000ms): " + toOrderedList(addrs0), true);

Thread.sleep(2000);
}
Expand Down
Expand Up @@ -830,10 +830,11 @@ else if (!spi.ipFinder.isShared() && !ipFinderHasLocAddr) {
e.addSuppressed(err);
}

if (e != null && X.hasCause(e, ConnectException.class))
if (e != null && X.hasCause(e, ConnectException.class)) {
LT.warn(log, null, "Failed to connect to any address from IP finder " +
"(make sure IP finder addresses are correct and firewalls are disabled on all host machines): " +
addrs);
toOrderedList(addrs), true);
}

if (spi.joinTimeout > 0) {
if (noResStart == 0)
Expand Down
Expand Up @@ -26,6 +26,7 @@
import org.apache.ignite.spi.discovery.tcp.internal.*;
import org.jetbrains.annotations.*;

import java.net.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
Expand Down Expand Up @@ -276,4 +277,18 @@ protected boolean checkAckTimeout(long ackTimeout) {

return true;
}

/**
* @param addrs Addresses.
*/
protected static List<String> toOrderedList(Collection<InetSocketAddress> addrs) {
List<String> res = new ArrayList<>(addrs.size());

for (InetSocketAddress addr : addrs)
res.add(addr.toString());

Collections.sort(res);

return res;
}
}

0 comments on commit 45aa598

Please sign in to comment.