typed flink working!
This commit is contained in:
parent
23bee726b1
commit
3faaa1c580
|
@ -210,11 +210,11 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
|||
(during (job-manager-alive)
|
||||
(log "TM learns about JM")
|
||||
(define/query-set task-runners (task-runner $id _) id
|
||||
#;#:on-add #;(log "TM learns about task-runner ~a" id))
|
||||
#:on-add (log "TM learns about task-runner ~a" id))
|
||||
;; I wonder just how inefficient this is
|
||||
(define/query-set idle-runners (task-runner $id IDLE) id
|
||||
#;#:on-add #;(log "TM learns that task-runner ~a is IDLE" id)
|
||||
#;#:on-remove #;(log "TM learns that task-runner ~a is NOT IDLE" id))
|
||||
#:on-add (log "TM learns that task-runner ~a is IDLE" id)
|
||||
#:on-remove (log "TM learns that task-runner ~a is NOT IDLE" id))
|
||||
(assert (task-manager id (set-count (ref idle-runners))))
|
||||
(field [busy-runners (List ID) (list)])
|
||||
(define (can-accept?)
|
||||
|
@ -312,14 +312,16 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
|||
|
||||
;; keep track of task managers, how many slots they say are open, and how many tasks we have assigned.
|
||||
(define/query-hash task-managers (task-manager $id $slots) id slots
|
||||
#;#:on-add #;(log "JM learns that ~a has ~v slots" id slots))
|
||||
#:on-add (log "JM learns that ~a has ~v slots" id (hash-ref (ref task-managers) id)))
|
||||
|
||||
;; (Hashof TaskManagerID Nat)
|
||||
;; to better understand the supply of slots for each task manager, keep track of the number
|
||||
;; of requested tasks that we have yet to hear back about
|
||||
(field [requests-in-flight (Hash ID Int) (hash)])
|
||||
(define (slots-available)
|
||||
#;(printf "slots available!\n")
|
||||
(for/sum ([(id v) (ref task-managers)])
|
||||
#;(printf "(slots-available) ~a :: ~a\n" id v)
|
||||
(max 0 (- v (hash-ref/failure (ref requests-in-flight) id 0)))))
|
||||
|
||||
;; ID -> Void
|
||||
|
@ -441,13 +443,14 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
|||
(define slots (slots-available))
|
||||
(define-tuple (ts readys)
|
||||
(split-at/lenient (ref ready-tasks) slots))
|
||||
#;(printf "slots: ~a\n" slots)
|
||||
#;(printf "ts: ~a\n" ts)
|
||||
#;(printf "readys: ~a\n" readys)
|
||||
(for ([t ts])
|
||||
(perform-task t push-results))
|
||||
(unless (empty? ts)
|
||||
;; the empty? check may be necessary to avoid a dataflow loop
|
||||
(set! ready-tasks readys)))
|
||||
|
||||
#f))))
|
||||
(set! ready-tasks readys)))))))
|
||||
|
||||
;; ---------------------------------------------------------------------------------------------------
|
||||
;; Client
|
||||
|
@ -477,4 +480,5 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
|||
(spawn-task-manager)
|
||||
(spawn-task-runner)
|
||||
(spawn-task-runner)
|
||||
(spawn-client (file->job "lorem.txt"))
|
||||
(spawn-client (string->job INPUT)))
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula
|
||||
accumsan tristique. Integer sit amet sem metus. Nam porta tempus nisl ac
|
||||
ullamcorper. Nulla interdum ante ut odio ultricies lobortis. Nam sollicitudin
|
||||
lorem quis pellentesque consequat. Aenean pulvinar diam sed nulla semper, eget
|
||||
varius tortor faucibus. Nam sodales mattis elit, ac convallis sem pretium sed.
|
||||
Aliquam nibh velit, facilisis sit amet aliquam quis, dapibus vel mauris. Cras
|
||||
pharetra arcu tortor, id pharetra massa aliquet non. Maecenas elit libero,
|
||||
malesuada nec enim ut, ornare sagittis lectus. Praesent bibendum sed magna id
|
||||
euismod. Maecenas vulputate nunc mauris, a dignissim magna volutpat consectetur.
|
||||
Fusce malesuada neque sapien, sit amet ultricies urna finibus non. Fusce
|
||||
ultrices ipsum vel ligula eleifend, eget eleifend magna interdum. Curabitur
|
||||
semper quam nunc, sed laoreet ipsum facilisis at. Etiam ut quam ac eros
|
||||
ullamcorper mattis eget vel leo.
|
||||
|
||||
Integer ac ipsum augue. Ut molestie ac mi vel varius. Praesent at est et nulla
|
||||
facilisis viverra sit amet eu augue. Nullam diam odio, elementum vehicula
|
||||
convallis id, hendrerit non magna. Suspendisse porta faucibus feugiat. In
|
||||
rhoncus semper diam eu malesuada. Suspendisse ligula metus, rhoncus eget nunc
|
||||
et, cursus rutrum sem. Fusce iaculis commodo magna, vitae viverra arcu. Fusce et
|
||||
eros et massa sollicitudin bibendum. Etiam convallis, nibh accumsan porttitor
|
||||
sollicitudin, mauris orci consectetur nisl, sit amet venenatis nulla enim eget
|
||||
risus. Phasellus quam diam, commodo in sodales eget, scelerisque sed odio. Sed
|
||||
aliquam massa vel efficitur volutpat. Mauris ut elit dictum, euismod turpis in,
|
||||
feugiat lectus.
|
||||
|
||||
Vestibulum leo est, feugiat sit amet metus nec, ullamcorper commodo purus. Sed
|
||||
non mauris non tellus ullamcorper congue interdum et mauris. Donec sit amet
|
||||
mauris urna. Sed in enim nisi. Praesent accumsan sagittis euismod. Donec vel
|
||||
nisl turpis. Ut non efficitur erat. Vestibulum quis fermentum elit. Mauris
|
||||
molestie nibh posuere fringilla rutrum. Praesent mattis tortor sapien, semper
|
||||
varius elit ultrices in.
|
||||
|
||||
Etiam non leo lacus. Cras id tincidunt ante. Donec mattis urna fermentum ex
|
||||
elementum blandit. Sed ornare vestibulum nulla luctus malesuada. Maecenas
|
||||
pulvinar metus tortor. Sed dapibus enim vel sem bibendum, sit amet tincidunt
|
||||
ligula varius. Nullam vitae augue at dui blandit cursus. Suspendisse faucibus
|
||||
posuere luctus.
|
||||
|
||||
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
|
||||
himenaeos. Aenean suscipit diam eu luctus auctor. Donec non magna quis ex
|
||||
tincidunt condimentum. Ut porta maximus quam, non varius sem mattis eu. Fusce
|
||||
sit amet vestibulum libero. Aliquam vestibulum sagittis mi a pellentesque. Cras
|
||||
maximus cursus libero vitae porttitor. Aenean fermentum erat eget turpis mattis,
|
||||
quis commodo magna pharetra. Praesent eu hendrerit arcu. Proin mollis, sem ac
|
||||
accumsan dignissim, velit risus ultricies mauris, eu imperdiet dolor ipsum at
|
||||
augue. Fusce bibendum, tortor eget pulvinar auctor, leo mi volutpat urna, nec
|
||||
convallis sem quam non tellus. Vestibulum fermentum sodales faucibus. Nunc quis
|
||||
feugiat quam. Donec pulvinar feugiat mauris non porttitor.
|
Loading…
Reference in New Issue