Hi All, I am facing the below error when trying to...
# ask-community
v
Hi All, I am facing the below error when trying to run sensors in dagster on local setup. i have a sensor which has another job as its trigger. When i am starting up the instance, there are no errors, but as soon as the first job completes, the sensor starts failing with the below error:
Copy code
2023-05-25 18:27:12 +0530 - dagster.daemon.SensorDaemon - ERROR - Sensor daemon caught an error for sensor ADHOC_JOB_SENSOR_TEST_3_job__jobs_sensor
Traceback (most recent call last):
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_daemon\sensor.py", line 520, in _process_tick_generator
    yield from _evaluate_sensor(
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_daemon\sensor.py", line 583, in _evaluate_sensor
    sensor_runtime_data = code_location.get_external_sensor_execution_data(
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\host_representation\code_location.py", line 845, in get_external_sensor_execution_data
    return sync_get_external_sensor_execution_data_grpc(
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_api\snapshot_sensor.py", line 78, in sync_get_external_sensor_execution_data_grpc
    raise DagsterUserCodeProcessError.from_error_info(result.error)
dagster._core.errors.DagsterUserCodeProcessError: dagster._core.errors.SensorExecutionError: Error occurred during the execution of evaluation_fn for sensor ADHOC_JOB_SENSOR_TEST_3_job__jobs_sensor

Stack Trace:
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_grpc\impl.py", line 369, in get_external_sensor_execution
    return sensor_def.evaluate_tick(sensor_context)
  File "C:\Users\Vignesh\.conda\envs\khde\lib\contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\errors.py", line 279, in user_code_error_boundary
    raise error_cls(

The above exception was caused by the following exception:
Exception:
                Called `get_event_records` on a run-sharded event log storage with a cursor that
                is not run-aware. Add a RunShardedEventsCursor to your query filter
                or switch your instance configuration to use a non-run-sharded event log storage
                (e.g. PostgresEventLogStorage, ConsolidatedSqliteEventLogStorage)


Stack Trace:
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\errors.py", line 272, in user_code_error_boundary
    yield
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_grpc\impl.py", line 369, in get_external_sensor_execution
    return sensor_def.evaluate_tick(sensor_context)
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\definitions\sensor_definition.py", line 690, in evaluate_tick
    result = list(self._evaluation_fn(context))
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\definitions\sensor_definition.py", line 969, in _wrapped_fn
    for item in result:
  File "D:\Projects\de2\khc_data_eng_core\khde\dagster\dagster_sensor_utils.py", line 305, in _multi_job_sensor
    context.instance.get_event_records(
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_utils\__init__.py", line 649, in inner
    return func(*args, **kwargs)
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\instance\__init__.py", line 1773, in get_event_records
    return self._event_storage.get_event_records(event_records_filter, limit, ascending)
  File "C:\Users\Vignesh\.conda\envs\khde\lib\site-packages\dagster\_core\storage\event_log\sqlite\sqlite_event_log.py", line 300, in get_event_records
    raise Exception(
The sensor body looks like this:
Copy code
event_records = list(
    context.instance.get_event_records(
        EventRecordsFilter(
            event_type=DagsterEventType.PIPELINE_SUCCESS,
            after_cursor=cursor,
        ),
        ascending=True,
    )
)
o
hi @Vignesh M! in this case, I'd recommend using the built-in run status sensor rather than manually querying the instance, as you need to structure your get_event_records call slightly differently depending on your instance type, and the built-in sensor handles this for you
In this case, the correct query would look like
after_cursor=RunShardedEventsCursor(id=cursor, run_updated_after=datetime.now()-datetime.timedelta(hours=1))