@Override
    public void outLink(long requestTime, String outApplicationName, ServiceType outServiceType, String outAgentId,
                        String inApplicationName, ServiceType inServiceType, String inHost, int elapsed, boolean isError) {
        Objects.requireNonNull(outApplicationName, "outApplicationName");
        Objects.requireNonNull(inApplicationName, "inApplicationName");


        if (logger.isDebugEnabled()) {
            logger.debug("[OutLink] {} ({}) {} -> {} ({})[{}]", outApplicationName, outServiceType, outAgentId,
                    inApplicationName, inServiceType, inHost);
        }

        // there may be no endpoint in case of httpclient
        inHost = Objects.toString(inHost, "");

        // make row key. rowkey is me
        final long rowTimeSlot = timeSlot.getTimeSlot(requestTime);
        final RowKey outLinkRowKey = LinkRowKey.of(outApplicationName, outServiceType, rowTimeSlot);

        final short inSlotNumber = ApplicationMapStatisticsUtils.getSlotNumber(inServiceType, elapsed, isError);

        final ColumnName inLink = InLinkColumnName.histogram(outAgentId, inServiceType, inApplicationName, inHost, inSlotNumber);
        this.bulkWriter.increment(outLinkRowKey, inLink);

        if (mapLinkConfiguration.isEnableAvg()) {
            final ColumnName sumInLink = InLinkColumnName.sum(outAgentId, inServiceType, inApplicationName, inHost, outServiceType);
            this.bulkWriter.increment(outLinkRowKey, sumInLink, elapsed);
        }
        if (mapLinkConfiguration.isEnableMax()) {
            final ColumnName maxInLink = InLinkColumnName.max(outAgentId, inServiceType, inApplicationName, inHost, outServiceType);
            this.bulkWriter.updateMax(outLinkRowKey, maxInLink, elapsed);
        }

    }
Update statistics of caller node

@author netspider
@author emeroad
@author HyunGil Jeong
collector/src/main/java/com/navercorp/pinpoint/collector/applicationmap/dao/hbase/HbaseMapOutLinkDao.java