1
- package org .dependencytrack .event .kafka .streams . processor ;
1
+ package org .dependencytrack .event .kafka .processor ;
2
2
3
3
import alpine .common .logging .Logger ;
4
- import alpine .common .metrics .Metrics ;
5
4
import com .github .packageurl .MalformedPackageURLException ;
6
5
import com .github .packageurl .PackageURL ;
7
- import io .micrometer .core .instrument .Timer ;
8
6
import org .apache .commons .lang3 .exception .ExceptionUtils ;
9
- import org .apache .kafka .streams .processor .api .Processor ;
10
- import org .apache .kafka .streams .processor .api .Record ;
7
+ import org .apache .kafka .clients .consumer .ConsumerRecord ;
8
+ import org .dependencytrack .event .kafka .processor .api .Processor ;
9
+ import org .dependencytrack .event .kafka .processor .exception .ProcessingException ;
11
10
import org .dependencytrack .model .FetchStatus ;
12
11
import org .dependencytrack .model .IntegrityMetaComponent ;
13
12
import org .dependencytrack .model .RepositoryMetaComponent ;
29
28
/**
30
29
* A {@link Processor} responsible for processing result of component repository meta analyses.
31
30
*/
32
- public class RepositoryMetaResultProcessor implements Processor <String , AnalysisResult , Void , Void > {
31
+ public class RepositoryMetaResultProcessor implements Processor <String , AnalysisResult > {
32
+
33
+ static final String PROCESSOR_NAME = "repo.meta.analysis.result" ;
33
34
34
35
private static final Logger LOGGER = Logger .getLogger (RepositoryMetaResultProcessor .class );
35
- private static final Timer TIMER = Timer .builder ("repo_meta_result_processing" )
36
- .description ("Time taken to process repository meta analysis results" )
37
- .register (Metrics .getRegistry ());
38
36
39
37
@ Override
40
- public void process (final Record <String , AnalysisResult > record ) {
41
- final Timer .Sample timerSample = Timer .start ();
38
+ public void process (final ConsumerRecord <String , AnalysisResult > record ) throws ProcessingException {
42
39
if (!isRecordValid (record )) {
43
40
return ;
44
41
}
@@ -49,13 +46,11 @@ public void process(final Record<String, AnalysisResult> record) {
49
46
performIntegrityCheck (integrityMetaComponent , record .value (), qm );
50
47
}
51
48
} catch (Exception e ) {
52
- LOGGER .error ("An unexpected error occurred while processing record %s" .formatted (record ), e );
53
- } finally {
54
- timerSample .stop (TIMER );
49
+ throw new ProcessingException (e );
55
50
}
56
51
}
57
52
58
- private IntegrityMetaComponent synchronizeIntegrityMetadata (final QueryManager queryManager , final Record <String , AnalysisResult > record ) throws MalformedPackageURLException {
53
+ private IntegrityMetaComponent synchronizeIntegrityMetadata (final QueryManager queryManager , final ConsumerRecord <String , AnalysisResult > record ) throws MalformedPackageURLException {
59
54
final AnalysisResult result = record .value ();
60
55
PackageURL purl = new PackageURL (result .getComponent ().getPurl ());
61
56
if (result .hasIntegrityMeta ()) {
@@ -66,7 +61,7 @@ private IntegrityMetaComponent synchronizeIntegrityMetadata(final QueryManager q
66
61
}
67
62
}
68
63
69
- private void synchronizeRepositoryMetadata (final QueryManager queryManager , final Record <String , AnalysisResult > record ) throws Exception {
64
+ private void synchronizeRepositoryMetadata (final QueryManager queryManager , final ConsumerRecord <String , AnalysisResult > record ) throws Exception {
70
65
PersistenceManager pm = queryManager .getPersistenceManager ();
71
66
final AnalysisResult result = record .value ();
72
67
PackageURL purl = new PackageURL (result .getComponent ().getPurl ());
@@ -104,7 +99,7 @@ private void synchronizeRepositoryMetadata(final QueryManager queryManager, fina
104
99
}
105
100
}
106
101
107
- private RepositoryMetaComponent createRepositoryMetaResult (Record <String , AnalysisResult > incomingAnalysisResultRecord , PersistenceManager pm , PackageURL purl ) throws Exception {
102
+ private RepositoryMetaComponent createRepositoryMetaResult (ConsumerRecord <String , AnalysisResult > incomingAnalysisResultRecord , PersistenceManager pm , PackageURL purl ) throws Exception {
108
103
final AnalysisResult result = incomingAnalysisResultRecord .value ();
109
104
if (result .hasLatestVersion ()) {
110
105
try (final Query <RepositoryMetaComponent > query = pm .newQuery (RepositoryMetaComponent .class )) {
@@ -145,7 +140,7 @@ private RepositoryMetaComponent createRepositoryMetaResult(Record<String, Analys
145
140
}
146
141
}
147
142
148
- private IntegrityMetaComponent synchronizeIntegrityMetaResult (final Record <String , AnalysisResult > incomingAnalysisResultRecord , QueryManager queryManager , PackageURL purl ) {
143
+ private IntegrityMetaComponent synchronizeIntegrityMetaResult (final ConsumerRecord <String , AnalysisResult > incomingAnalysisResultRecord , QueryManager queryManager , PackageURL purl ) {
149
144
final AnalysisResult result = incomingAnalysisResultRecord .value ();
150
145
IntegrityMetaComponent persistentIntegrityMetaComponent = queryManager .getIntegrityMetaComponent (purl .toString ());
151
146
if (persistentIntegrityMetaComponent != null && persistentIntegrityMetaComponent .getStatus () != null && persistentIntegrityMetaComponent .getStatus ().equals (FetchStatus .PROCESSED )) {
@@ -180,7 +175,7 @@ private IntegrityMetaComponent synchronizeIntegrityMetaResult(final Record<Strin
180
175
return queryManager .updateIntegrityMetaComponent (persistentIntegrityMetaComponent );
181
176
}
182
177
183
- private static boolean isRecordValid (final Record <String , AnalysisResult > record ) {
178
+ private static boolean isRecordValid (final ConsumerRecord <String , AnalysisResult > record ) {
184
179
final AnalysisResult result = record .value ();
185
180
if (!result .hasComponent ()) {
186
181
LOGGER .warn ("""
0 commit comments