Search in sources :

Example 6 with ISE

use of org.apache.druid.java.util.common.ISE in project druid by druid-io.

the class LimitRequestsFilterTest method createAndStartRequestThread.

private CountDownLatch createAndStartRequestThread(LimitRequestsFilter filter, ServletRequest req, HttpServletResponse resp) {
    CountDownLatch latch = new CountDownLatch(1);
    new Thread(() -> {
        try {
            filter.doFilter(req, resp, new TestFilterChain(latch));
        } catch (Exception e) {
            throw new ISE(e, "exception");
        }
    }).start();
    return latch;
}
Also used : ISE(org.apache.druid.java.util.common.ISE) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 7 with ISE

use of org.apache.druid.java.util.common.ISE in project druid by druid-io.

the class IndexerSQLMetadataStorageCoordinator method announceHistoricalSegmentBatch.

/**
 * Attempts to insert a single segment to the database. If the segment already exists, will do nothing; although,
 * this checking is imperfect and callers must be prepared to retry their entire transaction on exceptions.
 *
 * @return DataSegment set inserted
 */
private Set<DataSegment> announceHistoricalSegmentBatch(final Handle handle, final Set<DataSegment> segments, final Set<DataSegment> usedSegments) throws IOException {
    final Set<DataSegment> toInsertSegments = new HashSet<>();
    try {
        Set<String> existedSegments = segmentExistsBatch(handle, segments);
        log.info("Found these segments already exist in DB: %s", existedSegments);
        for (DataSegment segment : segments) {
            if (!existedSegments.contains(segment.getId().toString())) {
                toInsertSegments.add(segment);
            }
        }
        // SELECT -> INSERT can fail due to races; callers must be prepared to retry.
        // Avoiding ON DUPLICATE KEY since it's not portable.
        // Avoiding try/catch since it may cause inadvertent transaction-splitting.
        final List<List<DataSegment>> partitionedSegments = Lists.partition(new ArrayList<>(toInsertSegments), MAX_NUM_SEGMENTS_TO_ANNOUNCE_AT_ONCE);
        PreparedBatch preparedBatch = handle.prepareBatch(StringUtils.format("INSERT INTO %1$s (id, dataSource, created_date, start, %2$send%2$s, partitioned, version, used, payload) " + "VALUES (:id, :dataSource, :created_date, :start, :end, :partitioned, :version, :used, :payload)", dbTables.getSegmentsTable(), connector.getQuoteString()));
        for (List<DataSegment> partition : partitionedSegments) {
            for (DataSegment segment : partition) {
                preparedBatch.add().bind("id", segment.getId().toString()).bind("dataSource", segment.getDataSource()).bind("created_date", DateTimes.nowUtc().toString()).bind("start", segment.getInterval().getStart().toString()).bind("end", segment.getInterval().getEnd().toString()).bind("partitioned", (segment.getShardSpec() instanceof NoneShardSpec) ? false : true).bind("version", segment.getVersion()).bind("used", usedSegments.contains(segment)).bind("payload", jsonMapper.writeValueAsBytes(segment));
            }
            final int[] affectedRows = preparedBatch.execute();
            final boolean succeeded = Arrays.stream(affectedRows).allMatch(eachAffectedRows -> eachAffectedRows == 1);
            if (succeeded) {
                log.infoSegments(partition, "Published segments to DB");
            } else {
                final List<DataSegment> failedToPublish = IntStream.range(0, partition.size()).filter(i -> affectedRows[i] != 1).mapToObj(partition::get).collect(Collectors.toList());
                throw new ISE("Failed to publish segments to DB: %s", SegmentUtils.commaSeparatedIdentifiers(failedToPublish));
            }
        }
    } catch (Exception e) {
        log.errorSegments(segments, "Exception inserting segments");
        throw e;
    }
    return toInsertSegments;
}
Also used : NoneShardSpec(org.apache.druid.timeline.partition.NoneShardSpec) DataSegment(org.apache.druid.timeline.DataSegment) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) CallbackFailedException(org.skife.jdbi.v2.exceptions.CallbackFailedException) List(java.util.List) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) PreparedBatch(org.skife.jdbi.v2.PreparedBatch) ISE(org.apache.druid.java.util.common.ISE) HashSet(java.util.HashSet)

Example 8 with ISE

use of org.apache.druid.java.util.common.ISE in project druid by druid-io.

the class CuratorDruidNodeDiscoveryProvider method stop.

@LifecycleStop
public void stop() throws IOException {
    if (!lifecycleLock.canStop()) {
        throw new ISE("can't stop.");
    }
    log.debug("Stopping.");
    Closer closer = Closer.create();
    closer.registerAll(nodeRoleWatchers.values());
    closer.registerAll(nodeDiscoverers);
    CloseableUtils.closeAll(closer, listenerExecutor::shutdownNow);
}
Also used : Closer(org.apache.druid.java.util.common.io.Closer) ISE(org.apache.druid.java.util.common.ISE) LifecycleStop(org.apache.druid.java.util.common.lifecycle.LifecycleStop)

Example 9 with ISE

use of org.apache.druid.java.util.common.ISE in project druid by druid-io.

the class DruidLeaderClient method findCurrentLeader.

public String findCurrentLeader() {
    Preconditions.checkState(lifecycleLock.awaitStarted(1, TimeUnit.MILLISECONDS));
    final StringFullResponseHolder responseHolder;
    try {
        responseHolder = go(makeRequest(HttpMethod.GET, leaderRequestPath));
    } catch (Exception ex) {
        throw new ISE(ex, "Couldn't find leader.");
    }
    if (responseHolder.getStatus().getCode() == 200) {
        String leaderUrl = responseHolder.getContent();
        // verify this is valid url
        try {
            URL validatedUrl = new URL(leaderUrl);
            currentKnownLeader.set(leaderUrl);
            // the rule of ignoring new URL(leaderUrl) object.
            return validatedUrl.toString();
        } catch (MalformedURLException ex) {
            log.error(ex, "Received malformed leader url[%s].", leaderUrl);
        }
    }
    throw new ISE("Couldn't find leader, failed response status is [%s] and content [%s].", responseHolder.getStatus().getCode(), responseHolder.getContent());
}
Also used : StringFullResponseHolder(org.apache.druid.java.util.http.client.response.StringFullResponseHolder) MalformedURLException(java.net.MalformedURLException) ISE(org.apache.druid.java.util.common.ISE) MalformedURLException(java.net.MalformedURLException) ChannelException(org.jboss.netty.channel.ChannelException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) URL(java.net.URL)

Example 10 with ISE

use of org.apache.druid.java.util.common.ISE in project druid by druid-io.

the class QueryableIndexStorageAdapter method makeVectorCursor.

@Override
@Nullable
public VectorCursor makeVectorCursor(@Nullable final Filter filter, final Interval interval, final VirtualColumns virtualColumns, final boolean descending, final int vectorSize, @Nullable final QueryMetrics<?> queryMetrics) {
    if (!canVectorize(filter, virtualColumns, descending)) {
        throw new ISE("Cannot vectorize. Check 'canVectorize' before calling 'makeVectorCursor'.");
    }
    if (queryMetrics != null) {
        queryMetrics.vectorized(true);
    }
    final Interval actualInterval = computeCursorInterval(Granularities.ALL, interval);
    if (actualInterval == null) {
        return null;
    }
    final ColumnSelectorBitmapIndexSelector bitmapIndexSelector = makeBitmapIndexSelector(virtualColumns);
    final FilterAnalysis filterAnalysis = analyzeFilter(filter, bitmapIndexSelector, queryMetrics);
    return new QueryableIndexCursorSequenceBuilder(index, actualInterval, virtualColumns, filterAnalysis.getPreFilterBitmap(), getMinTime().getMillis(), getMaxTime().getMillis(), descending, filterAnalysis.getPostFilter(), bitmapIndexSelector).buildVectorized(vectorSize > 0 ? vectorSize : DEFAULT_VECTOR_SIZE);
}
Also used : ISE(org.apache.druid.java.util.common.ISE) Interval(org.joda.time.Interval) Nullable(javax.annotation.Nullable)

Aggregations

ISE (org.apache.druid.java.util.common.ISE)354 IOException (java.io.IOException)95 ArrayList (java.util.ArrayList)90 Map (java.util.Map)68 List (java.util.List)60 File (java.io.File)48 Interval (org.joda.time.Interval)48 DataSegment (org.apache.druid.timeline.DataSegment)44 HashMap (java.util.HashMap)43 Nullable (javax.annotation.Nullable)43 URL (java.net.URL)36 StatusResponseHolder (org.apache.druid.java.util.http.client.response.StatusResponseHolder)33 Request (org.apache.druid.java.util.http.client.Request)30 ExecutionException (java.util.concurrent.ExecutionException)29 ImmutableMap (com.google.common.collect.ImmutableMap)28 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)28 VisibleForTesting (com.google.common.annotations.VisibleForTesting)27 Collectors (java.util.stream.Collectors)27 IAE (org.apache.druid.java.util.common.IAE)27 ImmutableList (com.google.common.collect.ImmutableList)26