Skip to content

Feat/update det comp registration#1890

Merged
brosenberg42 merged 20 commits into
developfrom
feat/update-det-comp-registration
Jul 10, 2025
Merged

Feat/update det comp registration#1890
brosenberg42 merged 20 commits into
developfrom
feat/update-det-comp-registration

Conversation

@brosenberg42
Copy link
Copy Markdown
Member

@brosenberg42 brosenberg42 commented Mar 24, 2025

Copy link
Copy Markdown
Member

@jrobble jrobble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 24 of 24 files at r1, all commit messages.
Reviewable status: all files reviewed, 4 unresolved discussions (waiting on @brosenberg42)


a discussion (no related file):
I started a Docker deployment, stopped it, then started it again. I saw this in the WFM log:

2025-07-08 20:20:29,032 WARN [Camel (camelContext) thread #3 - JmsConsumer[MPF.DETECTION_COMPONENT_REGISTRATION]] o.m.m.w.s.c.AddComponentServiceImpl - An existing descriptor for the "SphinxSpeechDetection" component was not found. The newly received descriptor will be used.

However, I saw this in the Sphinx log:

2025-07-08 20:20:29,128 INFO [main] o.m.m.c.e.d.ComponentRegistration - Successfully registered component. Response from server: Updated existing component.

Same situation for the Python East component and C++ Ocv YOLO component.

How come the WFM says an existing descriptor wasn't found for a component that was previously registered? That's a bit strange.

I'm not sure if this behavior pre-existed your recent changes or not.


a discussion (no related file):
Nitpick: This subject tracking component log line is redundant "with signal". If this is not a quick / easy fix, don't worry about it:

[INFO  tini (1)] Main child exited with signal (with signal 'Terminated')

trunk/detection/executor/cpp/batch/BatchExecutorUtil.h line 47 at r1 (raw file):

    /** Wrapper around std::unique_ptr constructor that adds template type inference.  */
    template <typename T>

Nice refactor.


trunk/workflow-manager/src/main/java/org/mitre/mpf/wfm/camel/routes/DetectionComponentRegistrationRouteBuilder.java line 56 at r1 (raw file):

    DetectionComponentRegistrationRouteBuilder(
            ObjectMapper objectMapper,
            ComponentStateService componentState,

componentState isn't used.


trunk/workflow-manager/src/main/java/org/mitre/mpf/wfm/camel/routes/BaseComponentRegistrationRouteBuilder.java line 85 at r1 (raw file):

        catch (IOException | WfmProcessingException | ComponentRegistrationException e) {
            response.setHeader("success", false);
            response.setHeader("detail", "Failed to register due to: " + e);

I modified the descriptor files used by the East and ortools components by changing the name field of the first algorithm property to namebad.

The East component failed gracefully, From the East log:

2025-07-09 14:50:05,206 INFO  [org.mitre.mpf.detection:0] - Starting component registration.
2025-07-09 14:50:07,122 FATAL [org.mitre.mpf.detection:0] - An error occurred while trying to load component: Registration failed with response: Failed to register due to: org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
Executor exit code = 38

From the WFM log:

2025-07-09 15:01:35,217 INFO [main] o.m.m.Application - Started Application in 11.896 seconds (JVM running for 12.669)
2025-07-09 15:01:35,259 ERROR [Camel (camelContext) thread #3 - JmsConsumer[MPF.DETECTION_COMPONENT_REGISTRATION]] o.m.m.w.c.r.BaseComponentRegistrationRouteBuilder - An error occurred while trying to register component: org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
        at org.mitre.mpf.wfm.service.ConstraintValidationService.validateInternal(ConstraintValidationService.java:82) ~[classes/:?]
        at org.mitre.mpf.wfm.service.ConstraintValidationService.validate(ConstraintValidationService.java:72) ~[classes/:?]
        at org.mitre.mpf.wfm.service.component.AddComponentServiceImpl.registerDeployedComponent(AddComponentServiceImpl.java:178) ~[classes/:?]
        at org.mitre.mpf.wfm.service.component.AddComponentServiceImpl.registerUnmanagedComponent(AddComponentServiceImpl.java:265) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.DetectionComponentRegistrationRouteBuilder.registerComponent(DetectionComponentRegistrationRouteBuilder.java:71) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.DetectionComponentRegistrationRouteBuilder.registerComponent(DetectionComponentRegistrationRouteBuilder.java:41) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.BaseComponentRegistrationRouteBuilder.processRequest(BaseComponentRegistrationRouteBuilder.java:79) ~[classes/:?]
        at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:113) ~[camel-jms-2.24.0.jar:2.24.0]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:331) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1237) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1127) ~[spring-jms-5.3.31.jar:5.3.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]

That's all fine. (I performed a similar test with Sphinx and that worked fine.) The problem is with the ortools registration.

The last output in the ortools component log doesn't indicate an error:

2025-07-09 14:50:01,314 INFO  [org.mitre.mpf.subject] - Connection was successful. Resetting disconnect count.
2025-07-09 14:50:01,314 INFO  [proton] - Connected to workflow-manager
2025-07-09 14:50:01,315 INFO  [org.mitre.mpf.subject] - Sending component registration request.

Yet, the WFM log shows repeated lines like this:

2025-07-09 15:03:14,983 INFO [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.m.m.w.c.r.SubjectComponentRegistrationRouteBuilder - Received subject component registration request for "ORTOOLSSUBJECTCOMPONENT".
2025-07-09 15:03:14,989 INFO [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.m.m.w.s.c.s.SubjectComponentService - Registration attempt for ORTOOLSSUBJECTCOMPONENT resulted in: A new component was registered.
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.b.i.BatchingBatch - HHH000315: Exception executing batch [java.sql.BatchUpdateException: Batch entry 0 insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (('0.03'), ('Minimum required intersection over union for two tracks to be associated.'), (NULL), ('FLOAT'), ('ORTOOLSSUBJECTCOMPONENT'), (NULL)) was aborted: ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).  Call getNextException to see other errors in the batch.], SQL: insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)
2025-07-09 15:03:14,993 WARN [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - SQL Error: 0, SQLState: 23502
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - Batch entry 0 insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (('0.03'), ('Minimum required intersection over union for two tracks to be associated.'), (NULL), ('FLOAT'), ('ORTOOLSSUBJECTCOMPONENT'), (NULL)) was aborted: ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).  Call getNextException to see other errors in the batch.
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).
2025-07-09 15:03:14,995 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.a.c.p.DefaultErrorHandler - Failed delivery for (MessageId: ID-b530dfb278e2-1752073386209-0-11 on ExchangeId: ID-b530dfb278e2-1752073386209-0-10). Exhausted after delivery attempt: 1 caught: org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)]; constraint [name" of relation "subject_component_property]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[Subject Tracking C] [Subject Tracking C] [activemq://MPF.SUBJECT_COMPONENT_REGISTRATION?concurrentConsumers=1&maxConcurr] [        13]
[Subject Tracking C] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         0]
[Subject Tracking C] [process21         ] [Processor@0x210e7009                                                          ] [        12]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)]; constraint [name" of relation "subject_component_property]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
        at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:212) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:785) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:657) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743) ~[spring-tx-5.3.31.jar:5.3.31]

Copy link
Copy Markdown
Member Author

@brosenberg42 brosenberg42 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 21 of 24 files reviewed, 4 unresolved discussions (waiting on @jrobble)


a discussion (no related file):

Previously, jrobble (Jeff Robble) wrote…

I started a Docker deployment, stopped it, then started it again. I saw this in the WFM log:

2025-07-08 20:20:29,032 WARN [Camel (camelContext) thread #3 - JmsConsumer[MPF.DETECTION_COMPONENT_REGISTRATION]] o.m.m.w.s.c.AddComponentServiceImpl - An existing descriptor for the "SphinxSpeechDetection" component was not found. The newly received descriptor will be used.

However, I saw this in the Sphinx log:

2025-07-08 20:20:29,128 INFO [main] o.m.m.c.e.d.ComponentRegistration - Successfully registered component. Response from server: Updated existing component.

Same situation for the Python East component and C++ Ocv YOLO component.

How come the WFM says an existing descriptor wasn't found for a component that was previously registered? That's a bit strange.

I'm not sure if this behavior pre-existed your recent changes or not.

Unmanaged component registration has always been transient. If someone brings down a stack, then removes some components, and then starts the stack again, users will be able to create jobs using the defunct components. Those jobs will just sit at 0% forever.


a discussion (no related file):

Previously, jrobble (Jeff Robble) wrote…

Nitpick: This subject tracking component log line is redundant "with signal". If this is not a quick / easy fix, don't worry about it:

[INFO  tini (1)] Main child exited with signal (with signal 'Terminated')

It is telling you that it exited due to a signal rather than a normal exit and what signal caused the exit. There are signals other than SIGTERM that will cause a program to exit. They could have phrased it better, but it is useful information. This is another example of tini's INFO logging: [INFO tini (1)] Main child exited normally (with status '38')


trunk/workflow-manager/src/main/java/org/mitre/mpf/wfm/camel/routes/BaseComponentRegistrationRouteBuilder.java line 85 at r1 (raw file):

Previously, jrobble (Jeff Robble) wrote…

I modified the descriptor files used by the East and ortools components by changing the name field of the first algorithm property to namebad.

The East component failed gracefully, From the East log:

2025-07-09 14:50:05,206 INFO  [org.mitre.mpf.detection:0] - Starting component registration.
2025-07-09 14:50:07,122 FATAL [org.mitre.mpf.detection:0] - An error occurred while trying to load component: Registration failed with response: Failed to register due to: org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
Executor exit code = 38

From the WFM log:

2025-07-09 15:01:35,217 INFO [main] o.m.m.Application - Started Application in 11.896 seconds (JVM running for 12.669)
2025-07-09 15:01:35,259 ERROR [Camel (camelContext) thread #3 - JmsConsumer[MPF.DETECTION_COMPONENT_REGISTRATION]] o.m.m.w.c.r.BaseComponentRegistrationRouteBuilder - An error occurred while trying to register component: org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
org.mitre.mpf.wfm.service.component.InvalidComponentDescriptorException: There were errors in the following fields:
algorithm.providesCollection.properties[0].name="null": may not be empty
        at org.mitre.mpf.wfm.service.ConstraintValidationService.validateInternal(ConstraintValidationService.java:82) ~[classes/:?]
        at org.mitre.mpf.wfm.service.ConstraintValidationService.validate(ConstraintValidationService.java:72) ~[classes/:?]
        at org.mitre.mpf.wfm.service.component.AddComponentServiceImpl.registerDeployedComponent(AddComponentServiceImpl.java:178) ~[classes/:?]
        at org.mitre.mpf.wfm.service.component.AddComponentServiceImpl.registerUnmanagedComponent(AddComponentServiceImpl.java:265) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.DetectionComponentRegistrationRouteBuilder.registerComponent(DetectionComponentRegistrationRouteBuilder.java:71) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.DetectionComponentRegistrationRouteBuilder.registerComponent(DetectionComponentRegistrationRouteBuilder.java:41) ~[classes/:?]
        at org.mitre.mpf.wfm.camel.routes.BaseComponentRegistrationRouteBuilder.processRequest(BaseComponentRegistrationRouteBuilder.java:79) ~[classes/:?]
        at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) ~[camel-core-2.24.0.jar:2.24.0]
        at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:113) ~[camel-jms-2.24.0.jar:2.24.0]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:331) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1237) ~[spring-jms-5.3.31.jar:5.3.31]
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1127) ~[spring-jms-5.3.31.jar:5.3.31]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]

That's all fine. (I performed a similar test with Sphinx and that worked fine.) The problem is with the ortools registration.

The last output in the ortools component log doesn't indicate an error:

2025-07-09 14:50:01,314 INFO  [org.mitre.mpf.subject] - Connection was successful. Resetting disconnect count.
2025-07-09 14:50:01,314 INFO  [proton] - Connected to workflow-manager
2025-07-09 14:50:01,315 INFO  [org.mitre.mpf.subject] - Sending component registration request.

Yet, the WFM log shows repeated lines like this:

2025-07-09 15:03:14,983 INFO [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.m.m.w.c.r.SubjectComponentRegistrationRouteBuilder - Received subject component registration request for "ORTOOLSSUBJECTCOMPONENT".
2025-07-09 15:03:14,989 INFO [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.m.m.w.s.c.s.SubjectComponentService - Registration attempt for ORTOOLSSUBJECTCOMPONENT resulted in: A new component was registered.
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.b.i.BatchingBatch - HHH000315: Exception executing batch [java.sql.BatchUpdateException: Batch entry 0 insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (('0.03'), ('Minimum required intersection over union for two tracks to be associated.'), (NULL), ('FLOAT'), ('ORTOOLSSUBJECTCOMPONENT'), (NULL)) was aborted: ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).  Call getNextException to see other errors in the batch.], SQL: insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)
2025-07-09 15:03:14,993 WARN [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - SQL Error: 0, SQLState: 23502
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - Batch entry 0 insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (('0.03'), ('Minimum required intersection over union for two tracks to be associated.'), (NULL), ('FLOAT'), ('ORTOOLSSUBJECTCOMPONENT'), (NULL)) was aborted: ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).  Call getNextException to see other errors in the batch.
2025-07-09 15:03:14,993 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.h.e.j.s.SqlExceptionHelper - ERROR: null value in column "name" of relation "subject_component_property" violates not-null constraint
  Detail: Failing row contains (null, 0.03, Minimum required intersection over union for two tracks to be as..., null, FLOAT, ORTOOLSSUBJECTCOMPONENT).
2025-07-09 15:03:14,995 ERROR [Camel (camelContext) thread #20 - JmsConsumer[MPF.SUBJECT_COMPONENT_REGISTRATION]] o.a.c.p.DefaultErrorHandler - Failed delivery for (MessageId: ID-b530dfb278e2-1752073386209-0-11 on ExchangeId: ID-b530dfb278e2-1752073386209-0-10). Exhausted after delivery attempt: 1 caught: org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)]; constraint [name" of relation "subject_component_property]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[Subject Tracking C] [Subject Tracking C] [activemq://MPF.SUBJECT_COMPONENT_REGISTRATION?concurrentConsumers=1&maxConcurr] [        13]
[Subject Tracking C] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         0]
[Subject Tracking C] [process21         ] [Processor@0x210e7009                                                          ] [        12]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into subject_component_property (default_value, description, properties_key, type, component_name, name) values (?, ?, ?, ?, ?, ?)]; constraint [name" of relation "subject_component_property]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
        at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:212) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:785) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:657) ~[spring-orm-5.3.31.jar:5.3.31]
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743) ~[spring-tx-5.3.31.jar:5.3.31]

Done.


trunk/workflow-manager/src/main/java/org/mitre/mpf/wfm/camel/routes/DetectionComponentRegistrationRouteBuilder.java line 56 at r1 (raw file):

Previously, jrobble (Jeff Robble) wrote…

componentState isn't used.

Done.

Copy link
Copy Markdown
Member

@jrobble jrobble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 3 of 3 files at r2, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @brosenberg42)

@brosenberg42 brosenberg42 merged commit 5436f92 into develop Jul 10, 2025
2 checks passed
@brosenberg42 brosenberg42 deleted the feat/update-det-comp-registration branch July 10, 2025 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants