@@ -21,6 +21,7 @@ import no.nav.paw.bekreftelse.internehendelser.BekreftelseTilgjengelig
21
21
import no.nav.paw.bekreftelse.internehendelser.PeriodeAvsluttet
22
22
import no.nav.paw.logging.logger.buildLogger
23
23
import org.jetbrains.exposed.sql.transactions.transaction
24
+ import org.slf4j.MDC
24
25
import java.util.*
25
26
26
27
class VarselService (
@@ -32,136 +33,164 @@ class VarselService(
32
33
private val logger = buildLogger
33
34
34
35
fun mottaPeriode (periode : Periode ) = transaction {
35
- val periodeRow = periodeRepository.findByPeriodeId(periode.id)
36
- if (periodeRow != null ) {
37
- logger.warn(" Oppdaterer innslag for periode {}" , periode.id)
38
- meterRegistry.periodeCounter(" update" , periode)
39
- val updatePeriodeRow = periode.asUpdatePeriodeRow()
40
- periodeRepository.update(updatePeriodeRow)
41
- } else {
42
- logger.debug(" Oppretter innslag for periode {}" , periode.id)
43
- meterRegistry.periodeCounter(" insert" , periode)
44
- val insertPeriodeRow = periode.asInsertPeriodeRow()
45
- periodeRepository.insert(insertPeriodeRow)
36
+ try {
37
+ MDC .put(" x_event_name" , if (periode.avsluttet == null ) " periode.startet" else " periode.avsluttet" )
38
+ val periodeRow = periodeRepository.findByPeriodeId(periode.id)
39
+ if (periodeRow != null ) {
40
+ logger.debug(" Oppdaterer periode {}" , periode.id)
41
+ meterRegistry.periodeCounter(" update" , periode)
42
+ val updatePeriodeRow = periode.asUpdatePeriodeRow()
43
+ periodeRepository.update(updatePeriodeRow)
44
+ } else {
45
+ logger.debug(" Oppretter periode {}" , periode.id)
46
+ meterRegistry.periodeCounter(" insert" , periode)
47
+ val insertPeriodeRow = periode.asInsertPeriodeRow()
48
+ periodeRepository.insert(insertPeriodeRow)
49
+ }
50
+ } finally {
51
+ MDC .remove(" x_event_name" )
46
52
}
47
53
}
48
54
49
55
fun mottaBekreftelseHendelse (value : Pair <Periode ?, BekreftelseHendelse ?>): List <OppgaveMelding > = transaction {
50
- val (periode, hendelse) = value
51
- when (hendelse) {
52
- is BekreftelseTilgjengelig -> {
53
- if (periode != null ) {
56
+ try {
57
+ val (periode, hendelse) = value
58
+ MDC .put(" x_event_name" , hendelse?.hendelseType ? : " null" )
59
+
60
+ when (hendelse) {
61
+ is BekreftelseTilgjengelig -> {
62
+ if (periode != null ) {
63
+ val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
64
+ if (varselRow != null ) {
65
+ logger.warn(
66
+ " Ignorerer siden varsel allerede finnes for hendelse {} og periode {}" ,
67
+ hendelse.hendelseType,
68
+ hendelse.periodeId
69
+ )
70
+ meterRegistry.bekreftelseHendelseCounter(" ignore" , hendelse)
71
+ emptyList()
72
+ } else {
73
+ logger.debug(
74
+ " Bestiller og oppretter varsel for hendelse {} og periode {}" ,
75
+ hendelse.hendelseType,
76
+ hendelse.periodeId
77
+ )
78
+ meterRegistry.bekreftelseHendelseCounter(" insert" , hendelse)
79
+ val insertVarselRow = hendelse.asInsertVarselRow(
80
+ varselKilde = VarselKilde .BEKREFTELSE_TILGJENGELIG ,
81
+ varselType = VarselType .OPPGAVE ,
82
+ )
83
+ varselRepository.insert(insertVarselRow)
84
+
85
+ listOf (
86
+ varselMeldingBygger.opprettOppgave(
87
+ periode.identitetsnummer,
88
+ hendelse.bekreftelseId,
89
+ hendelse.gjelderTil
90
+ )
91
+ )
92
+ }
93
+ } else {
94
+ logger.warn(
95
+ " Ingen periode mottatt for hendelse {} med periode {}" ,
96
+ hendelse.hendelseType,
97
+ hendelse.periodeId
98
+ )
99
+ meterRegistry.bekreftelseHendelseCounter(" fail" , hendelse)
100
+ emptyList()
101
+ }
102
+ }
103
+
104
+ is BekreftelseMeldingMottatt -> {
54
105
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
55
106
if (varselRow != null ) {
107
+ logger.debug(
108
+ " Avslutter og sletter varsel for hendelse {} og periode {}" ,
109
+ hendelse.hendelseType,
110
+ hendelse.periodeId
111
+ )
112
+ meterRegistry.bekreftelseHendelseCounter(" delete" , hendelse)
113
+ varselRepository.deleteByVarselId(hendelse.bekreftelseId)
114
+ listOf (varselMeldingBygger.avsluttOppgave(hendelse.bekreftelseId))
115
+ } else {
56
116
logger.warn(
57
- " Ignorerer hendelse {} siden varsel allerede finnes" ,
58
- hendelse.hendelseType
117
+ " Fant ingen varsel for hendelse {} og periode {}" ,
118
+ hendelse.hendelseType,
119
+ hendelse.periodeId
59
120
)
60
- meterRegistry.bekreftelseHendelseCounter(" ignore" , hendelse)
121
+ meterRegistry.bekreftelseHendelseCounter(" fail" , hendelse)
122
+ emptyList()
123
+ }
124
+ }
125
+
126
+ is PeriodeAvsluttet -> {
127
+ val varselRows = varselRepository.findByPeriodeId(hendelse.periodeId)
128
+ if (varselRows.isEmpty()) {
129
+ logger.warn(
130
+ " Fant ingen varsler for hendelse {} og periode {}" ,
131
+ hendelse.hendelseType,
132
+ hendelse.periodeId
133
+ )
134
+ meterRegistry.bekreftelseHendelseCounter(" fail" , hendelse)
61
135
emptyList()
62
136
} else {
63
137
logger.debug(
64
- " Bestiller og oppretter varsel for hendelse {} og periode {}" ,
138
+ " Avlutter og sletter alle varsler for hendelse {} og periode {}" ,
65
139
hendelse.hendelseType,
66
140
hendelse.periodeId
67
141
)
68
- meterRegistry.bekreftelseHendelseCounter(" insert" , hendelse)
69
- val insertVarselRow = hendelse.asInsertVarselRow(
70
- varselKilde = VarselKilde .BEKREFTELSE_TILGJENGELIG ,
71
- varselType = VarselType .OPPGAVE ,
72
- )
73
- varselRepository.insert(insertVarselRow)
142
+ meterRegistry.bekreftelseHendelseCounter(" delete" , hendelse)
143
+ varselRepository.deleteByPeriodeId(hendelse.periodeId)
144
+ varselRows.map { varselMeldingBygger.avsluttOppgave(it.varselId) }
145
+ }
146
+ }
74
147
75
- listOf (
76
- varselMeldingBygger.opprettOppgave(
77
- periode.identitetsnummer,
78
- hendelse.bekreftelseId,
79
- hendelse.gjelderTil
80
- )
81
- )
148
+ else -> {
149
+ if (hendelse != null ) {
150
+ logger.debug( " Ignorerer hendelse {} " , hendelse.hendelseType)
151
+ meterRegistry.bekreftelseHendelseCounter( " ignore " , hendelse)
152
+ } else {
153
+ logger.debug( " Ignorerer hendelse som er null " )
154
+ meterRegistry.bekreftelseHendelseCounter( " ignore " , " null " , " bekreftelse.null " )
82
155
}
83
- } else {
84
- logger.warn(
85
- " Ingen periode mottatt for hendelse {} med periode {}" ,
86
- hendelse.hendelseType,
87
- hendelse.periodeId
88
- )
89
- meterRegistry.bekreftelseHendelseCounter(" fail" , hendelse)
90
156
emptyList()
91
157
}
92
158
}
159
+ } finally {
160
+ MDC .remove(" x_event_name" )
161
+ }
162
+ }
163
+
164
+ fun mottaVarselHendelse (hendelse : VarselHendelse ) = transaction {
165
+ try {
166
+ MDC .put(" x_event_name" , " varsel.${hendelse.eventName.value} " )
93
167
94
- is BekreftelseMeldingMottatt -> {
95
- val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
96
- if (varselRow != null ) {
168
+ val varselRow = varselRepository.findByVarselId( UUID .fromString(hendelse.varselId))
169
+ if ( varselRow != null ) {
170
+ if (varselRow.hendelseTimestamp.isBefore(hendelse.tidspunkt) ) {
97
171
logger.debug(
98
- " Avslutter og sletter varsel for varsel for hendelse {}" ,
99
- hendelse.hendelseType
172
+ " Oppdaterer varsel for hendelse {} med type {} og status {}" ,
173
+ VarselHendelse ::class .java.simpleName,
174
+ hendelse.varseltype,
175
+ hendelse.status
100
176
)
101
- meterRegistry.bekreftelseHendelseCounter(" delete" , hendelse)
102
- varselRepository.deleteByVarselId(hendelse.bekreftelseId)
103
- listOf (varselMeldingBygger.avsluttOppgave(hendelse.bekreftelseId))
177
+ val updateVarselRow = hendelse.asUpdateVarselRow()
178
+ varselRepository.update(updateVarselRow)
104
179
} else {
105
- logger.warn(" Fant ingen varsel for hendelse {}" , hendelse.hendelseType)
106
- meterRegistry.bekreftelseHendelseCounter(" fail" , hendelse)
107
- emptyList()
108
- }
109
- }
110
-
111
- is PeriodeAvsluttet -> {
112
- val varselRows = varselRepository.findByPeriodeId(hendelse.periodeId)
113
- if (varselRows.isEmpty()) {
114
180
logger.warn(
115
- " Fant ingen varsler for hendelse {} og periode {}" ,
116
- hendelse.hendelseType,
117
- hendelse.periodeId
118
- )
119
- emptyList()
120
- } else {
121
- logger.debug(
122
- " Avlutter og sletter alle varsler for hendelse {} og periode {}" ,
123
- hendelse.hendelseType,
124
- hendelse.periodeId
181
+ " Ignorerer hendelse {} med type {} og status {} siden lagret varsel {} er nyere enn hendelse {}" ,
182
+ VarselHendelse ::class .java.simpleName,
183
+ hendelse.varseltype,
184
+ hendelse.status,
185
+ varselRow.hendelseTimestamp,
186
+ hendelse.tidspunkt
125
187
)
126
- varselRepository.deleteByPeriodeId(hendelse.periodeId)
127
- varselRows.map { varselMeldingBygger.avsluttOppgave(it.varselId) }
128
188
}
129
- }
130
-
131
- else -> {
132
- if (hendelse != null ) {
133
- logger.debug(" Ignorerer hendelse {}" , hendelse.hendelseType)
134
- meterRegistry.bekreftelseHendelseCounter(" ignore" , hendelse)
135
- }
136
- emptyList()
137
- }
138
- }
139
- }
140
-
141
- fun mottaVarselHendelse (hendelse : VarselHendelse ) = transaction {
142
- val varselRow = varselRepository.findByVarselId(UUID .fromString(hendelse.varselId))
143
- if (varselRow != null ) {
144
- if (varselRow.hendelseTimestamp.isBefore(hendelse.tidspunkt)) {
145
- logger.debug(
146
- " Oppdaterer varsel for hendelse {} med type {} og status {}" ,
147
- VarselHendelse ::class .java.simpleName,
148
- hendelse.varseltype,
149
- hendelse.status
150
- )
151
- val updateVarselRow = hendelse.asUpdateVarselRow()
152
- varselRepository.update(updateVarselRow)
153
189
} else {
154
- logger.warn(
155
- " Ignorerer hendelse {} med type {} og status {} siden lagret varsel {} er nyere enn hendelse {}" ,
156
- VarselHendelse ::class .java.simpleName,
157
- hendelse.varseltype,
158
- hendelse.status,
159
- varselRow.hendelseTimestamp,
160
- hendelse.tidspunkt
161
- )
190
+ logger.warn(" Fant ikke lagret varsel for hendelse {}" , VarselHendelse ::class .java.simpleName)
162
191
}
163
- } else {
164
- logger.warn( " Fant ikke lagret varsel for hendelse {} " , VarselHendelse :: class .java.simpleName )
192
+ } finally {
193
+ MDC .remove( " x_event_name " )
165
194
}
166
195
}
167
196
}
0 commit comments