freelawproject / courtlistener

A fully-searchable and accessible archive of court data including growing repositories of opinions, oral arguments, judges, judicial financial records, and federal filings.
https://www.courtlistener.com
Other
544 stars 150 forks source link

Async issue? IntegrityError: null value in column "date_modified" of relation "search_docket" violates not-null constraint #2933

Open sentry-io[bot] opened 1 year ago

sentry-io[bot] commented 1 year ago

Not sure what's causing this, but it started today, which is quite suspicious.

Sentry Issue: COURTLISTENER-456

NotNullViolation: null value in column "date_modified" of relation "search_docket" violates not-null constraint
DETAIL:  Failing row contains (67623579, 2023-07-20 19:51:12.573945+00, null, null, null, null, , Lentz, Michael v. Coca-Cola Consolidated, Inc., , lentz-michael-v-coca-cola-consolidated-inc, 2021-05-0570, null, f, tennworkcompapp, null, null, null, , null, null, null, , , , , , null, null, 32, , , 0, null, null, , , , , null, , , null, null, null, , null).

  File "django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)

IntegrityError: null value in column "date_modified" of relation "search_docket" violates not-null constraint
DETAIL:  Failing row contains (67623579, 2023-07-20 19:51:12.573945+00, null, null, null, null, , Lentz, Michael v. Coca-Cola Consolidated, Inc., , lentz-michael-v-coca-cola-consolidated-inc, 2021-05-0570, null, f, tennworkcompapp, null, null, null, , null, null, null, , , , , , null, null, 32, , , 0, null, null, , , , , null, , , null, null, null, , null).

(22 additional frame(s) were not displayed)
...
  File "cl/opinion_page/views.py", line 138, in court_publish_page
    cluster = form.save()
  File "cl/opinion_page/forms.py", line 472, in save
    save_everything(
  File "contextlib.py", line 81, in inner
    return func(*args, **kwds)
  File "cl/scrapers/management/commands/cl_scrape_opinions.py", line 147, in save_everything
    docket.save()
  File "cl/search/models.py", line 708, in save
    super(Docket, self).save(update_fields=update_fields, *args, **kwargs)
mlissner commented 1 year ago

Hm, this is a bit troubling. We also got a very similar stack trace from a RECAP upload.

From COURTLISTENER-4GT:

NotNullViolation: null value in column "date_modified" of relation "search_docket" violates not-null constraint
DETAIL:  Failing row contains (67624915, 2023-07-21 00:24:59.353079+00, null, null, null, null, , Monte Masingale v. State of Washington, , monte-masingale-v-state-of-washington, 22-60053, null, f, ca9, null, null, null, , 2022-11-29, null, null, , , , , , 341415, null, 1, , , 0, null, ca9, BAP, Spokane Bankruptcy Court, bankruptcy appellate panel, other, Paid, , 23155, , , 2023-07-21 00:24:59.331702+00, t, null, 22060053, null).

  File "django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)

IntegrityError: null value in column "date_modified" of relation "search_docket" violates not-null constraint
DETAIL:  Failing row contains (67624915, 2023-07-21 00:24:59.353079+00, null, null, null, null, , Monte Masingale v. State of Washington, , monte-masingale-v-state-of-washington, 22-60053, null, f, ca9, null, null, null, , 2022-11-29, null, null, , , , , , 341415, null, 1, , , 0, null, ca9, BAP, Spokane Bankruptcy Court, bankruptcy appellate panel, other, Paid, , 23155, , , 2023-07-21 00:24:59.331702+00, t, null, 22060053, null).

  File "asgiref/sync.py", line 486, in thread_handler
    raise exc_info[1]
  File "django/core/handlers/exception.py", line 42, in inner
    response = await get_response(request)
  File "asgiref/sync.py", line 486, in thread_handler
    raise exc_info[1]
  File "django/core/handlers/base.py", line 253, in _get_response_async
    response = await wrapped_callback(
  File "asgiref/sync.py", line 448, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "asgiref/sync.py", line 490, in thread_handler
    return func(*args, **kwargs)
  File "django/views/decorators/csrf.py", line 56, in wrapper_view
    return view_func(*args, **kwargs)
  File "rest_framework/viewsets.py", line 125, in view
    return self.dispatch(request, *args, **kwargs)
  File "rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "asgiref/sync.py", line 240, in __call__
    return call_result.result()
  File "concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
  File "concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "asgiref/sync.py", line 306, in main_wrap
    result = await self.awaitable(*args, **kwargs)
  File "cl/recap/views.py", line 56, in perform_create
    await process_recap_upload(pq)
  File "cl/recap/tasks.py", line 118, in process_recap_upload
    docket = await process_recap_appellate_docket(pq.pk)
  File "cl/recap/tasks.py", line 969, in process_recap_appellate_docket
    await d.asave()
  File "django/db/models/base.py", line 826, in asave
    return await sync_to_async(self.save)(
  File "asgiref/sync.py", line 448, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "asgiref/sync.py", line 490, in thread_handler
    return func(*args, **kwargs)
  File "cl/search/models.py", line 708, in save
    super(Docket, self).save(update_fields=update_fields, *args, **kwargs)
  File "django/db/models/base.py", line 814, in save
    self.save_base(
  File "django/db/models/base.py", line 877, in save_base
    updated = self._save_table(
  File "django/db/models/base.py", line 1020, in _save_table
    results = self._do_insert(
  File "django/db/models/base.py", line 1061, in _do_insert
    return manager._insert(
  File "django/db/models/manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "django/db/models/query.py", line 1805, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "django/db/models/sql/compiler.py", line 1822, in execute_sql
    cursor.execute(sql, params)
  File "django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(
  File "django/db/backends/utils.py", line 80, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "pghistory/runtime.py", line 50, in _inject_history_context
    return execute(sql, params, many, context)
  File "django/db/backends/utils.py", line 84, in _execute
    with self.db.wrap_database_errors:
  File "django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
mlissner commented 1 year ago

cc @ttys0dev

sentry-io[bot] commented 1 year ago

Sentry issue: COURTLISTENER-4GT