Example #1
0
 return async (dispatch, getState) => {
   const { datasourceInstance, eventBridge, queries, queryIntervals, range, scanning } = getState().explore[exploreId];
   const datasourceId = datasourceInstance.meta.id;
   // Run all queries concurrently
   for (let rowIndex = 0; rowIndex < queries.length; rowIndex++) {
     const query = queries[rowIndex];
     const transaction = buildQueryTransaction(
       query,
       rowIndex,
       resultType,
       queryOptions,
       range,
       queryIntervals,
       scanning
     );
     dispatch(queryTransactionStartAction({ exploreId, resultType, rowIndex, transaction }));
     try {
       const now = Date.now();
       const res = await datasourceInstance.query(transaction.options);
       eventBridge.emit('data-received', res.data || []);
       const latency = Date.now() - now;
       const { queryTransactions } = getState().explore[exploreId];
       const results = resultGetter ? resultGetter(res.data, transaction, queryTransactions) : res.data;
       dispatch(queryTransactionSuccess(exploreId, transaction.id, results, latency, queries, datasourceId));
     } catch (response) {
       eventBridge.emit('data-error', response);
       dispatch(queryTransactionFailure(exploreId, transaction.id, response, datasourceId));
     }
   }
 };
Example #2
0
  return async (dispatch, getState) => {
    const { datasourceInstance, eventBridge, queries, queryIntervals, range, scanning, history } = getState().explore[
      exploreId
    ];

    if (resultType === 'Logs' && datasourceInstance.convertToStreamTargets) {
      dispatch(
        startSubscriptionsAction({
          exploreId,
          dataReceivedActionCreator: subscriptionDataReceivedAction,
        })
      );
    }

    const datasourceId = datasourceInstance.meta.id;
    const transaction = buildQueryTransaction(queries, resultType, queryOptions, range, queryIntervals, scanning);
    dispatch(queryStartAction({ exploreId, resultType, rowIndex: 0, transaction }));
    try {
      const now = Date.now();
      const response = await datasourceInstance.query(transaction.options);
      eventBridge.emit('data-received', response.data || []);
      const latency = Date.now() - now;
      // Side-effect: Saving history in localstorage
      const nextHistory = updateHistory(history, datasourceId, queries);
      dispatch(historyUpdatedAction({ exploreId, history: nextHistory }));
      dispatch(processQueryResults(exploreId, response, latency, resultType, datasourceId));
    } catch (err) {
      eventBridge.emit('data-error', err);
      dispatch(processQueryErrors(exploreId, err, resultType, datasourceId));
    }
  };
Example #3
0
 queries.forEach(async (query, rowIndex) => {
   const transaction = buildQueryTransaction(
     query,
     rowIndex,
     resultType,
     queryOptions,
     range,
     queryIntervals,
     scanning
   );
   dispatch(queryTransactionStartAction({ exploreId, resultType, rowIndex, transaction }));
   try {
     const now = Date.now();
     const res = await datasourceInstance.query(transaction.options);
     eventBridge.emit('data-received', res.data || []);
     const latency = Date.now() - now;
     const results = resultGetter ? resultGetter(res.data) : res.data;
     dispatch(queryTransactionSuccess(exploreId, transaction.id, results, latency, queries, datasourceId));
   } catch (response) {
     eventBridge.emit('data-error', response);
     dispatch(queryTransactionFailure(exploreId, transaction.id, response, datasourceId));
   }
 });