Skip to content

Commit 0968c8f

Browse files
authored
Cl/fix poll list result main (#138)
* fix poll list task * fix dbt exception * nits * bump version
1 parent a935d29 commit 0968c8f

File tree

7 files changed

+48
-16
lines changed

7 files changed

+48
-16
lines changed

dbt_rpc/contracts/rpc.py

+27
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,33 @@ def from_result(
788788
)
789789

790790

791+
@dataclass
792+
@schema_version('poll-remote-list-result', 1)
793+
class PollListResult(RemoteListResults, PollResult):
794+
state: TaskHandlerState = field(
795+
metadata=restrict_to(TaskHandlerState.Success,
796+
TaskHandlerState.Failed),
797+
)
798+
799+
@classmethod
800+
def from_result(
801+
cls: Type['PollListResult'],
802+
base: RemoteListResults,
803+
tags: TaskTags,
804+
timing: TaskTiming,
805+
logs: List[LogMessage],
806+
) -> 'PollListResult':
807+
return cls(
808+
output=base.output,
809+
logs=logs,
810+
tags=tags,
811+
state=timing.state,
812+
start=timing.start,
813+
end=timing.end,
814+
elapsed=timing.elapsed,
815+
)
816+
817+
791818
@dataclass
792819
@schema_version("poll-remote-freshness-result", 1)
793820
class PollFreshnessResult(RemoteFreshnessResult, PollResult):

dbt_rpc/rpc/builtins.py

+14-9
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import dbt.exceptions
77
from dbt_rpc.contracts.rpc import (
8+
PollListResult,
9+
RemoteListResults,
810
TaskTags,
911
StatusParameters,
1012
ReloadParameters,
@@ -54,7 +56,7 @@ def set_args(self, params: GCParameters):
5456

5557
def handle_request(self) -> GCResult:
5658
if self.params is None:
57-
raise dbt.exceptions.InternalException("GC: params not set")
59+
raise dbt.exceptions.DbtInternalError("GC: params not set")
5860
return self.task_manager.gc_safe(
5961
task_ids=self.params.task_ids,
6062
before=self.params.before,
@@ -70,7 +72,7 @@ def set_args(self, params: KillParameters):
7072

7173
def handle_request(self) -> KillResult:
7274
if self.params is None:
73-
raise dbt.exceptions.InternalException("Kill: params not set")
75+
raise dbt.exceptions.DbtInternalError("Kill: params not set")
7476
result = KillResult()
7577
task: RequestTaskHandler
7678
try:
@@ -117,7 +119,7 @@ def set_args(self, params: PSParameters):
117119

118120
def keep(self, row: TaskRow):
119121
if self.params is None:
120-
raise dbt.exceptions.InternalException("PS: params not set")
122+
raise dbt.exceptions.DbtInternalError("PS: params not set")
121123
if row.state.finished and self.params.completed:
122124
return True
123125
elif not row.state.finished and self.params.active:
@@ -136,7 +138,7 @@ def poll_complete(
136138
timing: TaskTiming, result: Any, tags: TaskTags, logs: List[LogMessage]
137139
) -> PollResult:
138140
if timing.state not in (TaskHandlerState.Success, TaskHandlerState.Failed):
139-
raise dbt.exceptions.InternalException(
141+
raise dbt.exceptions.DbtInternalError(
140142
f"got invalid result state in poll_complete: {timing.state}"
141143
)
142144

@@ -150,6 +152,7 @@ def poll_complete(
150152
PollRunOperationCompleteResult,
151153
PollGetManifestResult,
152154
PollFreshnessResult,
155+
PollListResult,
153156
]
154157
]
155158

@@ -170,8 +173,10 @@ def poll_complete(
170173
cls = PollGetManifestResult
171174
elif isinstance(result, RemoteFreshnessResult):
172175
cls = PollFreshnessResult
176+
elif isinstance(result, RemoteListResults):
177+
cls = PollListResult
173178
else:
174-
raise dbt.exceptions.InternalException(
179+
raise dbt.exceptions.DbtInternalError(
175180
"got invalid result in poll_complete: {}".format(result)
176181
)
177182
return cls.from_result(result, tags, timing, logs)
@@ -189,7 +194,7 @@ def set_args(self, params: PollParameters):
189194

190195
def handle_request(self) -> PollResult:
191196
if self.params is None:
192-
raise dbt.exceptions.InternalException("Poll: params not set")
197+
raise dbt.exceptions.DbtInternalError("Poll: params not set")
193198
task_id = self.params.request_token
194199
task: RequestTaskHandler = self.task_manager.get_request(task_id)
195200

@@ -216,7 +221,7 @@ def handle_request(self) -> PollResult:
216221
elif state == TaskHandlerState.Error:
217222
err = task.error
218223
if err is None:
219-
exc = dbt.exceptions.InternalException(
224+
exc = dbt.exceptions.DbtInternalError(
220225
f"At end of task {task_id}, error state but error is None"
221226
)
222227
raise RPCException.from_error(
@@ -227,7 +232,7 @@ def handle_request(self) -> PollResult:
227232
raise err
228233
elif state in (TaskHandlerState.Success, TaskHandlerState.Failed):
229234
if task.result is None:
230-
exc = dbt.exceptions.InternalException(
235+
exc = dbt.exceptions.DbtInternalError(
231236
f"At end of task {task_id}, state={state} but result is " "None"
232237
)
233238
raise RPCException.from_error(
@@ -246,7 +251,7 @@ def handle_request(self) -> PollResult:
246251
elapsed=timing.elapsed,
247252
)
248253
else:
249-
exc = dbt.exceptions.InternalException(
254+
exc = dbt.exceptions.DbtInternalError(
250255
f"Got unknown value state={state} for task {task_id}"
251256
)
252257
raise RPCException.from_error(dbt_error(exc, logs=_dict_logs(task_logs)))

dbt_rpc/rpc/gc.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def collect_task_id(
7474
except KeyError:
7575
# someone was mutating tasks while we had the lock, that's
7676
# not right!
77-
raise dbt.exceptions.InternalException(
77+
raise dbt.exceptions.DbtInternalError(
7878
'Got a KeyError for task uuid={} during gc'
7979
.format(task_id)
8080
)

dbt_rpc/rpc/response_manager.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def __getitem__(self, key) -> Callable[..., Dict[str, Any]]:
6060
self.manager, handler, self.http_request, self.json_rpc_request
6161
)
6262
else:
63-
raise dbt.exceptions.InternalException(
63+
raise dbt.exceptions.DbtInternalError(
6464
f'Got an invalid handler from get_handler. Expected None, '
6565
f'callable, or RemoteMethod, got {handler}'
6666
)

dbt_rpc/rpc/task_handler_protocol.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ def tags(self) -> Optional[TaskTags]:
4242

4343
def _assert_started(self) -> datetime:
4444
if self.started is None:
45-
raise dbt.exceptions.InternalException(
45+
raise dbt.exceptions.DbtInternalError(
4646
'task handler started but start time is not set'
4747
)
4848
return self.started
4949

5050
def _assert_ended(self) -> datetime:
5151
if self.ended is None:
52-
raise dbt.exceptions.InternalException(
52+
raise dbt.exceptions.DbtInternalError(
5353
'task handler finished but end time is not set'
5454
)
5555
return self.ended

dbt_rpc/rpc/task_manager.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def _get_manifest_callable(
161161
return ParseError(self.last_parse.error)
162162
else:
163163
if self.manifest is None:
164-
raise dbt.exceptions.InternalException(
164+
raise dbt.exceptions.DbtInternalError(
165165
f'Manifest should not be None if the last parse state is '
166166
f'{state}'
167167
)
@@ -179,7 +179,7 @@ def rpc_task(
179179
elif issubclass(task, RemoteMethod):
180180
return task(deepcopy(self.args), self.config)
181181
else:
182-
raise dbt.exceptions.InternalException(
182+
raise dbt.exceptions.DbtInternalError(
183183
f'Got a task with an invalid type! {task} with method '
184184
f'name {method_name} has a type of {task.__class__}, '
185185
f'should be a RemoteMethod'

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def read(fname):
88

99

1010
package_name = "dbt-rpc"
11-
package_version = "0.4.0"
11+
package_version = "0.4.1"
1212
description = """ A JSON RPC server that provides an interface to programmically interact with dbt projects. """
1313

1414

0 commit comments

Comments
 (0)