@Override
    public List<PrepareRequest> buildBatchRequests() {
        long now = System.currentTimeMillis();
        if (now - lastReportTimestamp <= reportPeriod) {
            // Only do report in its own report period.
            return Collections.EMPTY_LIST;
        }
        lastReportTimestamp = now;

        final List<TopN> lastCollection = getCache().read();

        List<PrepareRequest> prepareRequests = new ArrayList<>(lastCollection.size());
        lastCollection.forEach(record -> {
            try {
                prepareRequests.add(recordDAO.prepareBatchInsert(model, record));
            } catch (Throwable t) {
                log.error(t.getMessage(), t);
            }
        });
        return prepareRequests;
    }
Force overriding the parent buildBatchRequests. Use its own report period.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/TopNWorker.java