Skip to content

Commit 60a9a33

Browse files
committed
NMS-16966: Added indices for metadata tables
1 parent 3abf80d commit 60a9a33

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<databaseChangeLog
3+
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
6+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
7+
8+
<changeSet author="cpape" id="33.0.3-node_metadata-index">
9+
<createIndex tableName="node_metadata" indexName="node_metadata_refid_idx" associatedWith="foreignKey" unique="false">
10+
<column name="id" />
11+
</createIndex>
12+
</changeSet>
13+
14+
<changeSet author="cpape" id="33.0.3-ipinterface_metadata-index">
15+
<createIndex tableName="ipinterface_metadata" indexName="ipinterface_metadata_refid_idx" associatedWith="foreignKey" unique="false">
16+
<column name="id" />
17+
</createIndex>
18+
</changeSet>
19+
20+
<changeSet author="cpape" id="33.0.3-ifservices_metadata-index">
21+
<createIndex tableName="ifservices_metadata" indexName="ifservices_metadata_refid_idx" associatedWith="foreignKey" unique="false">
22+
<column name="id" />
23+
</createIndex>
24+
</changeSet>
25+
26+
</databaseChangeLog>

core/schema/src/main/liquibase/changelog.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<include file="31.0.2/changelog.xml"/>
101101
<include file="foundation-2023/changelog.xml"/>
102102
<include file="32.0.0/changelog.xml"/>
103+
<include file="33.0.3/changelog.xml"/>
103104

104105
<include file="stored-procedures/getManagePercentAvailIntfWindow.xml" />
105106
<include file="stored-procedures/getManagePercentAvailNodeWindow.xml" />

features/kafka/producer/src/test/java/org/opennms/features/kafka/producer/KafkaForwarderIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,17 @@
116116
* @author jwhite
117117
*/
118118
@RunWith(OpenNMSJUnit4ClassRunner.class)
119-
@ContextConfiguration(locations = { "classpath:/META-INF/opennms/applicationContext-soa.xml",
119+
@ContextConfiguration(locations = {
120+
"classpath:/META-INF/opennms/applicationContext-dao.xml",
121+
"classpath:/META-INF/opennms/applicationContext-soa.xml",
120122
"classpath:/META-INF/opennms/applicationContext-commonConfigs.xml",
121123
"classpath:/META-INF/opennms/applicationContext-eventUtil.xml",
122124
"classpath:/META-INF/opennms/applicationContext-minimal-conf.xml",
123125
"classpath:/META-INF/opennms/applicationContext-mockDao.xml",
124126
"classpath:/META-INF/opennms/applicationContext-daemon.xml",
125127
"classpath:/META-INF/opennms/mockEventIpcManager.xml",
126128
"classpath:/META-INF/opennms/applicationContext-alarmd.xml",
129+
"classpath*:/META-INF/opennms/component-dao.xml",
127130
"classpath:/applicationContext-test-kafka-producer.xml" })
128131
@JUnitConfigurationEnvironment
129132
@JUnitTemporaryDatabase(dirtiesContext = false, tempDbClass = MockDatabase.class, reuseDatabase = false)

opennms-alarms/daemon/src/main/java/org/opennms/netmgt/alarmd/drools/DroolsAlarmContext.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import org.hibernate.Hibernate;
4444
import org.hibernate.ObjectNotFoundException;
45+
import org.hibernate.SessionFactory;
4546
import org.kie.api.runtime.KieSession;
4647
import org.kie.api.runtime.rule.FactHandle;
4748
import org.opennms.core.sysprops.SystemProperties;
@@ -107,6 +108,9 @@ public class DroolsAlarmContext extends ManagedDroolsContext implements AlarmLif
107108
@Autowired
108109
private AlarmDao alarmDao;
109110

111+
@Autowired
112+
private SessionFactory sessionFactory;
113+
110114
private final AlarmCallbackStateTracker stateTracker = new AlarmCallbackStateTracker();
111115

112116
private final Map<Integer, AlarmAndFact> alarmsById = new HashMap<>();
@@ -456,6 +460,8 @@ private void eagerlyInitializeAlarm(OnmsAlarm alarm) {
456460
Hibernate.initialize(alarm.getNode().getCategories());
457461
// Allow rules to use metadata of the associated node
458462
Hibernate.initialize(alarm.getNode().getMetaData());
463+
// see NMS-16966
464+
sessionFactory.getCurrentSession().setReadOnly(alarm.getNode(), true);
459465
}
460466
}
461467

@@ -589,4 +595,8 @@ public void setTransactionTemplate(TransactionTemplate template) {
589595
public void setAlarmDao(AlarmDao alarmDao) {
590596
this.alarmDao = alarmDao;
591597
}
598+
599+
public void setSessionFactory(final SessionFactory sessionFactory) {
600+
this.sessionFactory = sessionFactory;
601+
}
592602
}

opennms-alarms/daemon/src/test/java/org/opennms/netmgt/alarmd/drools/DroolsAlarmContextIT.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
import java.util.concurrent.TimeUnit;
5151
import java.util.concurrent.atomic.AtomicBoolean;
5252

53+
import org.hibernate.classic.Session;
54+
import org.hibernate.SessionFactory;
5355
import org.junit.After;
5456
import org.junit.Before;
5557
import org.junit.Ignore;
@@ -127,6 +129,11 @@ public void setUp() throws InterruptedException, IOException {
127129
dac.setAlarmService(alarmService);
128130
dac.setAcknowledgmentDao(acknowledgmentDao);
129131

132+
Session session = mock(Session.class);
133+
SessionFactory sessionFactory = mock(SessionFactory.class);
134+
when(sessionFactory.getCurrentSession()).thenReturn(session);
135+
dac.setSessionFactory(sessionFactory);
136+
130137
dac.start();
131138

132139
// Wait

opennms-alarms/daemon/src/test/java/org/opennms/netmgt/alarmd/examples/DroolsExampleIT.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import java.util.Optional;
3232

3333
import org.apache.commons.io.FileUtils;
34+
import org.hibernate.SessionFactory;
35+
import org.hibernate.classic.Session;
3436
import org.junit.After;
3537
import org.junit.Before;
3638
import org.junit.Rule;
@@ -92,6 +94,11 @@ public void setUp() throws IOException, InterruptedException {
9294
dac.setAlarmService(alarmService);
9395
dac.setAcknowledgmentDao(acknowledgmentDao);
9496

97+
Session session = mock(Session.class);
98+
SessionFactory sessionFactory = mock(SessionFactory.class);
99+
when(sessionFactory.getCurrentSession()).thenReturn(session);
100+
dac.setSessionFactory(sessionFactory);
101+
95102
dac.start();
96103
dac.waitForInitialSeedToBeSubmitted();
97104
}

0 commit comments

Comments
 (0)