Skip to content

Commit

Permalink
Remove all recurring queries in active use
Browse files Browse the repository at this point in the history
  • Loading branch information
pkalliok committed Jul 18, 2023
1 parent 55003fe commit 18f3e3b
Show file tree
Hide file tree
Showing 19 changed files with 60 additions and 117 deletions.
14 changes: 4 additions & 10 deletions src/oph/heratepalvelu/amis/AMISMuistutusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -90,19 +90,13 @@
(- (* 5 (+ n 1)) 1)))]
[:s (str (.minusDays (c/local-date-now)
(* 5 n)))]]]}
{:index "muistutusIndex"
:limit 50}))
{:index "muistutusIndex"}))

(defn -handleSendAMISMuistutus
"Käsittelee AMISin muistutusviestien lähetystä."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleSendAMISMuistutus" event context)
(loop [muistutettavat1 (query-muistutukset 1)
muistutettavat2 (query-muistutukset 2)]
(let [muistutettavat1 (query-muistutukset 1)
muistutettavat2 (query-muistutukset 2)]
(sendAMISMuistutus muistutettavat1 1)
(sendAMISMuistutus muistutettavat2 2)
(when (and
(or (seq muistutettavat1) (seq muistutettavat2))
(< 60000 (.getRemainingTimeInMillis context)))
(recur (query-muistutukset 1)
(query-muistutukset 2)))))
(sendAMISMuistutus muistutettavat2 2)))
11 changes: 4 additions & 7 deletions src/oph/heratepalvelu/amis/AMISSMSHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"Hakee eniten limit herätettä tietokannasta, joilta SMS-viestiä ei ole vielä
lähetetty ja herätepäivämäärä on jo mennyt. Hakee vain herätteet, joihin
kyselylinkki on jo luotu."
[limit]
[]
(ddb/query-items-with-expression
"#smstila = :tila AND #alku <= :pvm"
{:index "smsIndex"
Expand All @@ -30,8 +30,7 @@
"#alku" "alkupvm"
"#linkki" "kyselylinkki"}
:expr-attr-vals {":tila" [:s (:ei-lahetetty c/kasittelytilat)]
":pvm" [:s (str (c/local-date-now))]}
:limit limit}
":pvm" [:s (str (c/local-date-now))]}}
(:herate-table env)))

(defn update-status-in-db!
Expand Down Expand Up @@ -85,12 +84,10 @@
käsittelee viestien lähetystä."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(cl/log-caller-details-scheduled "AMISSMSHandler" event context)
(loop [lahetettavat (query-lahetettavat 20)]
(let [lahetettavat (query-lahetettavat)]
(log/info "Käsitellään" (count lahetettavat) "lähetettävää SMS-viestiä.")
(when (seq lahetettavat)
(doseq [herate lahetettavat]
(->> herate
(send-sms-and-return-status!)
(update-status-in-db! herate)))
(when (< 60000 (.getRemainingTimeInMillis context))
(recur (query-lahetettavat 20))))))
(update-status-in-db! herate))))))
9 changes: 3 additions & 6 deletions src/oph/heratepalvelu/amis/AMISherateEmailHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,7 @@
[]
(ddb/query-items {:lahetystila [:eq [:s (:ei-lahetetty c/kasittelytilat)]]
:alkupvm [:le [:s (str (c/local-date-now))]]}
{:index "lahetysIndex"
:limit 10}))
{:index "lahetysIndex"}))

(defn send-email-for-palaute!
"Lähettää sähköpostia yhden palauteherätteen suhteen (jos tarpeen)."
Expand Down Expand Up @@ -199,10 +198,8 @@
viestintäpalveluun."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleSendAMISEmails" event context)
(loop [lahetettavat (do-query)]
(let [lahetettavat (do-query)]
(log/info "Käsitellään" (count lahetettavat) "lähetettävää viestiä.")
(when (seq lahetettavat)
(doseq [lahetettava lahetettavat]
(-> lahetettava (with-kyselylinkki!) (send-email-for-palaute!)))
(when (< 60000 (.getRemainingTimeInMillis context))
(recur (do-query))))))
(-> lahetettava (with-kyselylinkki!) (send-email-for-palaute!))))))
16 changes: 6 additions & 10 deletions src/oph/heratepalvelu/amis/EmailStatusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@
[]
(ddb/query-items {:lahetystila
[:eq [:s (:viestintapalvelussa c/kasittelytilat)]]}
{:index "lahetysIndex"
:limit 10}))
{:index "lahetysIndex"}))

(defn handle-single-herate!
"Hakee yhden viestin tilan viestintäpalvelusta ja päivittää sen tietokantaan.
Expand All @@ -74,11 +73,8 @@
"Päivittää viestintäpalvelussa olevien sähköpostien tilat tietokantaan."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleEmailStatus" event context)
(loop [heratteet (do-query!)]
;; this logic is weird, though. If we have 10 messages that have not
;; been sent yet, we stop querying for more that might be. Is it correct?
(let [changed? (->> heratteet
(map handle-single-herate!) ; avoid short circuit here
(reduce #(or %2 %1) false))]
(when (and changed? (< 120000 (.getRemainingTimeInMillis context)))
(recur (do-query!))))))
(let [heratteet (do-query!)
changed? (->> heratteet
(map handle-single-herate!) ; avoid short circuit here
(reduce #(or %2 %1) false))]
(log/info (if changed? "Handled" "Nothing to update"))))
10 changes: 3 additions & 7 deletions src/oph/heratepalvelu/tep/EmailMuistutusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,12 @@
{:muistutukset [:eq [:n 0]]
:lahetyspvm [:between [[:s (str (.minusDays (c/local-date-now) 10))]
[:s (str (.minusDays (c/local-date-now) 5))]]]}
{:index "emailMuistutusIndex"
:limit 10}
{:index "emailMuistutusIndex"}
(:nippu-table env)))

(defn -handleSendEmailMuistutus
"Käsittelee muistettavia nippuja."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleSendEmailMuistutus" event context)
(loop [muistutettavat (query-muistutukset)]
(sendEmailMuistutus muistutettavat)
(when (and (seq muistutettavat)
(< 60000 (.getRemainingTimeInMillis context)))
(recur (query-muistutukset)))))
(let [muistutettavat (query-muistutukset)]
(sendEmailMuistutus muistutettavat)))
11 changes: 3 additions & 8 deletions src/oph/heratepalvelu/tep/SMSMuistutusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,12 @@
10))]
[:s (str (.minusDays (c/local-date-now)
5))]]]}
{:index "smsMuistutusIndex"
:limit 10}
{:index "smsMuistutusIndex"}
(:nippu-table env)))

(defn -handleSendSMSMuistutus
"Hakee SMS-muistutettavia nippuja tietokannasta ja lähettää viestejä."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleSendSMSMuistutus" event context)
(loop [muistutettavat (query-muistutukset)]
(sendSmsMuistutus muistutettavat)
(when (and
(seq muistutettavat)
(< 60000 (.getRemainingTimeInMillis context)))
(recur (query-muistutukset)))))
(let [muistutettavat (query-muistutukset)]
(sendSmsMuistutus muistutettavat)))
24 changes: 6 additions & 18 deletions src/oph/heratepalvelu/tep/StatusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,11 @@
jos kyselyyn ei ole vielä vastattu ja kyselyä ei ole vielä lähetetty."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleEmailStatus" event context)
(loop [emails (ddb/query-items
{:kasittelytila
[:eq [:s (:viestintapalvelussa c/kasittelytilat)]]}
{:index "niputusIndex"
:limit 100}
(:nippu-table env))]
(let [emails (ddb/query-items
{:kasittelytila
[:eq [:s (:viestintapalvelussa c/kasittelytilat)]]}
{:index "niputusIndex"}
(:nippu-table env))]
(doseq [email emails]
(log/info "Päivitetään tila viestintäpalvelussa olevalle nipulle" email)
(let [nippu (ddb/get-item {:ohjaaja_ytunnus_kj_tutkinto
Expand Down Expand Up @@ -68,15 +67,4 @@
(log/error e))
(catch Exception e
(log/error "Lähetystilan tallennus Arvoon epäonnistui" nippu)
(log/error e))))))
(when (and @new-changes?
(< 60000 (.getRemainingTimeInMillis context)))
;; XXX: here too, if 100 (or 10, as below) messages have not yet been
;; sent, we stop processing; it's probably not correct
(reset! new-changes? false)
(recur (ddb/query-items
{:kasittelytila
[:eq [:s (:viestintapalvelussa c/kasittelytilat)]]}
{:index "niputusIndex"
:limit 10}
(:nippu-table env))))))
(log/error e))))))))
9 changes: 3 additions & 6 deletions src/oph/heratepalvelu/tep/emailHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@
[]
(ddb/query-items {:kasittelytila [:eq [:s (:ei-lahetetty c/kasittelytilat)]]
:niputuspvm [:le [:s (str (c/local-date-now))]]}
{:index "niputusIndex"
:limit 20}
{:index "niputusIndex"}
(:nippu-table env)))

(defn email-sent-update-item
Expand Down Expand Up @@ -107,7 +106,7 @@
käsittelee näiden viestien lähettämisen viestinäpalveluun."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleSendTEPEmails" event context)
(loop [lahetettavat (do-nippu-query)]
(let [lahetettavat (do-nippu-query)]
(log/info "Käsitellään" (count lahetettavat) "lähetettävää viestiä.")
(when (seq lahetettavat)
(doseq [nippu lahetettavat]
Expand All @@ -132,6 +131,4 @@
(log/warn "Nipun" (:ohjaaja_ytunnus_kj_tutkinto nippu)
"niputuspvm" (:niputuspvm nippu)
"ja lahetyspvm" lahetyspvm
"eroavat toisistaan."))))))
(when (< 60000 (.getRemainingTimeInMillis context))
(recur (do-nippu-query))))))
"eroavat toisistaan.")))))))))
23 changes: 10 additions & 13 deletions src/oph/heratepalvelu/tep/niputusHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,7 @@
[]
(ddb/query-items {:kasittelytila [:eq [:s (:ei-niputettu c/kasittelytilat)]]
:niputuspvm [:le [:s (str (c/local-date-now))]]}
{:index "niputusIndex"
:limit 10}
{:index "niputusIndex"}
(:nippu-table env)))

(defn get-nippu-key
Expand All @@ -338,14 +337,12 @@
"Hakee ja niputtaa niputtamattomat jaksot."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "handleNiputus" event context)
(let [processed-niput (atom {})]
(loop [niputettavat (sort-by :niputuspvm #(- (compare %1 %2)) (do-query))]
(log/info "Käsitellään" (count niputettavat) "niputusta.")
(when (seq niputettavat)
(doseq [nippu niputettavat]
(if (get @processed-niput (get-nippu-key nippu))
(log/warn "Nippu on jo käsitelty" nippu)
(do (niputa nippu)
(swap! processed-niput assoc (get-nippu-key nippu) true))))
(when (< 120000 (.getRemainingTimeInMillis context))
(recur (do-query)))))))
(let [processed-niput (atom {})
niputettavat (sort-by :niputuspvm #(- (compare %1 %2)) (do-query))]
(log/info "Käsitellään" (count niputettavat) "niputusta.")
(when (seq niputettavat)
(doseq [nippu niputettavat]
(if (get @processed-niput (get-nippu-key nippu))
(log/warn "Nippu on jo käsitelty" nippu)
(do (niputa nippu)
(swap! processed-niput assoc (get-nippu-key nippu) true)))))))
11 changes: 4 additions & 7 deletions src/oph/heratepalvelu/tep/tepSmsHandler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -80,20 +80,19 @@
(defn query-lahetettavat
"Hakee enintään limit nippua tietokannasta, joilta SMS-viesti ei ole vielä
lähetetty ja niputuspäivämäärä on jo mennyt."
[limit]
[]
(ddb/query-items
{:sms_kasittelytila [:eq [:s (:ei-lahetetty c/kasittelytilat)]]
:niputuspvm [:le [:s (str (c/local-date-now))]]}
{:index "smsIndex"
:limit limit}
{:index "smsIndex"}
(:nippu-table env)))

(defn -handleTepSmsSending
"Hakee nippuja tietokannasta, joilta ei ole lähetetty SMS-viestejä, ja
käsittelee viestien lähetystä."
[_ event ^com.amazonaws.services.lambda.runtime.Context context]
(log-caller-details-scheduled "tepSmsHandler" event context)
(loop [lahetettavat (query-lahetettavat 20)]
(let [lahetettavat (query-lahetettavat)]
(log/info "Käsitellään" (count lahetettavat) "lähetettävää viestiä.")
(when (seq lahetettavat)
(doseq [nippu lahetettavat]
Expand Down Expand Up @@ -163,6 +162,4 @@
(log/error "Server error while sending sms")
(log/error e))))
(catch Exception e
(log/error "Unhandled exception " e))))))))
(when (< 60000 (.getRemainingTimeInMillis context))
(recur (query-lahetettavat 10))))))
(log/error "Unhandled exception " e)))))))))))
11 changes: 5 additions & 6 deletions test/oph/heratepalvelu/amis/AMISSMSHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
oph.heratepalvelu.db.dynamodb/query-items-with-expression
mock-query-items
environ.core/env {:herate-table "herate-table-name"}]
(is (= (ash/query-lahetettavat 20)
(is (= (ash/query-lahetettavat)
{:params "#smstila = :tila AND #alku <= :pvm"
:options
{:index "smsIndex"
Expand All @@ -28,16 +28,15 @@
"#alku" "alkupvm",
"#linkki" "kyselylinkki"}
:expr-attr-vals {":tila" [:s "ei_lahetetty"],
":pvm" [:s "2022-03-03"]}
:limit 20}
":pvm" [:s "2022-03-03"]}}
:table "herate-table-name"})))))

(def results (atom []))

(defn- add-to-results [object] (reset! results (cons object @results)))

(defn- mock-query-lahetettavat [limit]
(add-to-results {:type "mock-query-lahetettavat" :limit limit})
(defn- mock-query-lahetettavat []
(add-to-results {:type "mock-query-lahetettavat"})
[{:voimassa-loppupvm "2022-02-02"}
{:voimassa-loppupvm "2022-04-04"
:puhelinnumero "lkj12hl34kj1hl3412"}
Expand Down Expand Up @@ -71,7 +70,7 @@
oph.heratepalvelu.external.organisaatio/get-organisaatio
mock-get-organisaatio
oph.heratepalvelu.external.elisa/send-sms mock-send-sms]
(let [expected [{:type "mock-query-lahetettavat" :limit 20}
(let [expected [{:type "mock-query-lahetettavat"}
{:type "mock-update-herate"
:herate {:voimassa-loppupvm "2022-02-02"}
:options {:sms-lahetyspvm [:s "2022-03-03"]
Expand Down
3 changes: 1 addition & 2 deletions test/oph/heratepalvelu/amis/AMISherateEmailHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,7 @@
(= :le (first (:alkupvm query-params)))
(= :s (first (second (:alkupvm query-params))))
(= "2021-10-10" (second (second (:alkupvm query-params))))
(= "lahetysIndex" (:index options))
(= 10 (:limit options))))
(= "lahetysIndex" (:index options))))

(deftest test-do-query
(testing "Varmista, että do-query kutsuu query-items oikein"
Expand Down
3 changes: 1 addition & 2 deletions test/oph/heratepalvelu/amis/EmailStatusHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,7 @@
(= :s (first (second (:lahetystila query-params))))
(= (:viestintapalvelussa c/kasittelytilat)
(second (second (:lahetystila query-params))))
(= "lahetysIndex" (:index options))
(= 10 (:limit options)))))
(= "lahetysIndex" (:index options)))))

(deftest test-do-query!
(testing "Varmista, että do-query! kutsuu query-items oikein"
Expand Down
1 change: 0 additions & 1 deletion test/oph/heratepalvelu/tep/EmailMuistutusHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@
(= :s (first (first (second (:lahetyspvm query-params)))))
(= :s (first (second (second (:lahetyspvm query-params)))))
(= "emailMuistutusIndex" (:index options))
(= 10 (:limit options))
(= "nippu-table-name" table))
{:start-date (second (first (second (:lahetyspvm query-params))))
:end-date (second (second (second (:lahetyspvm query-params))))}))
Expand Down
1 change: 0 additions & 1 deletion test/oph/heratepalvelu/tep/SMSMuistutusHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
(= "2021-12-10"
(second (second (second (:sms_lahetyspvm query-params)))))
(= "smsMuistutusIndex" (:index options))
(= 10 (:limit options))
(= "nippu-table-name" table)))

(deftest test-query-muistutukset
Expand Down
6 changes: 2 additions & 4 deletions test/oph/heratepalvelu/tep/StatusHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@
(second (second (:kasittelytila query-params))))
(= "niputusIndex" (:index options))
(= "nippu-table-name" table))
(add-to-test-results {:type "mock-query-items"
:limit (:limit options)})
(add-to-test-results {:type "mock-query-items"})
[{:ohjaaja_ytunnus_kj_tutkinto "test-id-1"
:niputuspvm "2021-12-15"}
{:ohjaaja_ytunnus_kj_tutkinto "test-id-2"
Expand Down Expand Up @@ -88,8 +87,7 @@
mock-update-nippu]
(let [event (tu/mock-handler-event :scheduledherate)
context (tu/mock-handler-context)
results [{:type "mock-query-items"
:limit 100}
results [{:type "mock-query-items"}
{:type "mock-get-item"
:value "test-id-1"}
{:type "mock-get-email-status" :id 1}
Expand Down
1 change: 0 additions & 1 deletion test/oph/heratepalvelu/tep/emailHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@
(= :le (first (:niputuspvm query-params)))
(= :s (first (second (:niputuspvm query-params))))
(= "niputusIndex" (:index options))
(= 20 (:limit options))
(= "nippu-table-name" table))
(reset! test-do-nippu-query-results
(second (second (:niputuspvm query-params))))))
Expand Down
1 change: 0 additions & 1 deletion test/oph/heratepalvelu/tep/niputusHandler_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,6 @@
(= :le (first (:niputuspvm query-params)))
(= :s (first (second (:niputuspvm query-params))))
(= "niputusIndex" (:index options))
(= 10 (:limit options))
(= "nippu-table-name" table))
(add-to-handler-results
{:type "mock-handler-query-items"
Expand Down
Loading

0 comments on commit 18f3e3b

Please sign in to comment.