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)
|
(during (job-manager-alive)
|
||||||
(log "TM learns about JM")
|
(log "TM learns about JM")
|
||||||
(define/query-set task-runners (task-runner $id _) id
|
(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
|
;; I wonder just how inefficient this is
|
||||||
(define/query-set idle-runners (task-runner $id IDLE) id
|
(define/query-set idle-runners (task-runner $id IDLE) id
|
||||||
#;#:on-add #;(log "TM learns that task-runner ~a is 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-remove (log "TM learns that task-runner ~a is NOT IDLE" id))
|
||||||
(assert (task-manager id (set-count (ref idle-runners))))
|
(assert (task-manager id (set-count (ref idle-runners))))
|
||||||
(field [busy-runners (List ID) (list)])
|
(field [busy-runners (List ID) (list)])
|
||||||
(define (can-accept?)
|
(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.
|
;; 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
|
(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)
|
;; (Hashof TaskManagerID Nat)
|
||||||
;; to better understand the supply of slots for each task manager, keep track of the number
|
;; 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
|
;; of requested tasks that we have yet to hear back about
|
||||||
(field [requests-in-flight (Hash ID Int) (hash)])
|
(field [requests-in-flight (Hash ID Int) (hash)])
|
||||||
(define (slots-available)
|
(define (slots-available)
|
||||||
|
#;(printf "slots available!\n")
|
||||||
(for/sum ([(id v) (ref task-managers)])
|
(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)))))
|
(max 0 (- v (hash-ref/failure (ref requests-in-flight) id 0)))))
|
||||||
|
|
||||||
;; ID -> Void
|
;; ID -> Void
|
||||||
|
@ -441,13 +443,14 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
||||||
(define slots (slots-available))
|
(define slots (slots-available))
|
||||||
(define-tuple (ts readys)
|
(define-tuple (ts readys)
|
||||||
(split-at/lenient (ref ready-tasks) slots))
|
(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])
|
(for ([t ts])
|
||||||
(perform-task t push-results))
|
(perform-task t push-results))
|
||||||
(unless (empty? ts)
|
(unless (empty? ts)
|
||||||
;; the empty? check may be necessary to avoid a dataflow loop
|
;; the empty? check may be necessary to avoid a dataflow loop
|
||||||
(set! ready-tasks readys)))
|
(set! ready-tasks readys)))))))
|
||||||
|
|
||||||
#f))))
|
|
||||||
|
|
||||||
;; ---------------------------------------------------------------------------------------------------
|
;; ---------------------------------------------------------------------------------------------------
|
||||||
;; Client
|
;; Client
|
||||||
|
@ -477,4 +480,5 @@ The JobManager then performs the job and, when finished, asserts (job-finished I
|
||||||
(spawn-task-manager)
|
(spawn-task-manager)
|
||||||
(spawn-task-runner)
|
(spawn-task-runner)
|
||||||
(spawn-task-runner)
|
(spawn-task-runner)
|
||||||
|
(spawn-client (file->job "lorem.txt"))
|
||||||
(spawn-client (string->job INPUT)))
|
(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