in ttl2-compatible/src/main/java/com/alibaba/ttl/TransmittableThreadLocal.java [344:359]
private static void doExecuteCallback(boolean isBefore) {
// copy TTL Instances to avoid `ConcurrentModificationException`
// even adjust TTL instances in biz lifecycle callbacks(beforeExecute/afterExecute)
WeakHashMap<TransmittableThreadLocal<Object>, ?> ttlInstances = new WeakHashMap<TransmittableThreadLocal<Object>, Object>(holder.get());
for (TransmittableThreadLocal<Object> threadLocal : ttlInstances.keySet()) {
try {
if (isBefore) threadLocal.beforeExecute();
else threadLocal.afterExecute();
} catch (Throwable t) {
if (logger.isLoggable(Level.WARNING)) {
logger.log(Level.WARNING, "TTL exception when " + (isBefore ? "beforeExecute" : "afterExecute") + ", cause: " + t, t);
}
}
}
}