Timeout wykonywania funkcji

Timeout wykonywania funkcji
O7
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 11 lat
  • Postów:25
0

Witam.
Mam problem i nie mogę znaleźć rozwiązania.
Otóż dostaje requesta do kontrolera który powoduje rozpoczęcie wykonywania pewnej funkcji, a w niej wykonuje zapytanie do bazy i w zależności od tego jak długo się kręci zapytanie musze zwrócić dane z bazy lub informację o timeoucie.
Czy jest możliwość wykonania tego zapytania i zwrócenia wyników tak by zapytanie do bazy nie było wysyłane z oddzielnego wątku?
Rozwiązanie dostarczone przez ExecutorService odpada, gdyż jest tworzony nowy wątek z którego nie mogę dostać się do bazy.
Wpadłem na pomysł by przed wysłaniem zapytania odpalić wątek z odmierzaniem czasu ale po jego upływie i tak nie zwrócę timeouta, a zwrócenie czegokolwiek może odbyć się dopiero po wykonaniu zapytania na bazie. Myślałem też o tworzeniu Labelek i w wątku odmierzającym czas postawić break label; ale blok labelki jest na zewnątrz watku, wiec label jest dla tego watka niewidoczny.
Myślałem by rzucić wyjątek z wątku odmierzania czasu i w parencie go przechwycić ale jak wiecie to też jest nie możliwe.
Czy jest możliwość zastopowania wykonywania funkcji gdy wykonuje się zbyt długo i zwrócenia z niej wartości?Jakieś pomysły?

WK
WK
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:110
0

A co powstrzymuje Cie od wykonania zapytania w osobnym watku?

O7
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 11 lat
  • Postów:25
0

Hibernate.
Czy można to zrobić w sposób jaki przedstawiłem?

WK
WK
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:110
0

Nadal nie rozumiem dlaczego nie mozesz wykonac zapytania w osobnym watku. Mozesz przyblizyc swoje nieudane proby z ExecutorService?

O7
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 11 lat
  • Postów:25
0

jezeli bede wykonywac zadanie przy uzyciu ExecutorService to z automatu zadanie wykjonuje się w nowym watku.
To z kolei tworzy wyjatki i brak odczytu z bazy.
Rozumiem ze nie ma takiego rozwiazania poza wykonaniem w nowym watku, ktore mi nie pasuje

edytowany 1x, ostatnio: ohoho7
WK
wojciech.kudla
Wyjatki dostajesz prawdodpobnie dlatego ze w nowym watku nie startujesz transakcji. Nie jestem w stanie wyobrazic sobie wspolbieznosci bez watkow (albo fibers). W zwiazku z tym: Tak. Jesli chcesz robic cokolwiek wspolbieznie to potrzebujesz watkow.
__krzysiek85
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 9 lat
  • Postów:1019
0

Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5
edytowany 3x, ostatnio: __krzysiek85

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.