Skip to content

Commit 425fc68

Browse files
committed
fix(core): 🐛 fix diagnostic execution
1 parent 5cd8829 commit 425fc68

26 files changed

+76
-96
lines changed

src/main/java/onl/netfishers/netshot/device/Device.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ public void addDiagnosticResult(DiagnosticResult result) {
742742
while (existingIterator.hasNext()) {
743743
DiagnosticResult existingResult = existingIterator.next();
744744
if (existingResult.getDiagnostic().equals(result.getDiagnostic())) {
745-
if (result.equals(existingResult)) {
745+
if (result.equals(existingResult) && result.valueEquals(existingResult)) {
746746
existingResult.setLastCheckDate(result.getLastCheckDate());
747747
doAdd = false;
748748
}

src/main/java/onl/netfishers/netshot/device/attribute/ConfigAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public ConfigAttribute(Config config, String name) {
9595
@Transient
9696
public abstract Object getData();
9797

98-
public abstract boolean deepEquals(ConfigAttribute other);
98+
public abstract boolean valueEquals(ConfigAttribute other);
9999

100100
@Override
101101
public int hashCode() {

src/main/java/onl/netfishers/netshot/device/attribute/ConfigBinaryAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public Object getData() {
6565
}
6666

6767
@Override
68-
public boolean deepEquals(ConfigAttribute obj) {
68+
public boolean valueEquals(ConfigAttribute obj) {
6969
if (this == obj)
7070
return true;
7171
if (!(obj instanceof ConfigBinaryAttribute))

src/main/java/onl/netfishers/netshot/device/attribute/ConfigBinaryFileAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public Object getData() {
9595
}
9696

9797
@Override
98-
public boolean deepEquals(ConfigAttribute obj) {
98+
public boolean valueEquals(ConfigAttribute obj) {
9999
if (this == obj)
100100
return true;
101101
if (!(obj instanceof ConfigBinaryFileAttribute))

src/main/java/onl/netfishers/netshot/device/attribute/ConfigLongTextAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public Object getData() {
6969
}
7070

7171
@Override
72-
public boolean deepEquals(ConfigAttribute obj) {
72+
public boolean valueEquals(ConfigAttribute obj) {
7373
if (this == obj)
7474
return true;
7575
if (!(obj instanceof ConfigLongTextAttribute))

src/main/java/onl/netfishers/netshot/device/attribute/ConfigNumericAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public Object getData() {
6363
}
6464

6565
@Override
66-
public boolean deepEquals(ConfigAttribute obj) {
66+
public boolean valueEquals(ConfigAttribute obj) {
6767
if (this == obj)
6868
return true;
6969
if (!(obj instanceof ConfigNumericAttribute))

src/main/java/onl/netfishers/netshot/device/attribute/ConfigTextAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public Object getData() {
6363
}
6464

6565
@Override
66-
public boolean deepEquals(ConfigAttribute obj) {
66+
public boolean valueEquals(ConfigAttribute obj) {
6767
if (this == obj)
6868
return true;
6969
if (!(obj instanceof ConfigTextAttribute))

src/main/java/onl/netfishers/netshot/device/script/SnapshotCliScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ protected void run(Session session, Device device, Cli cli, Snmp snmp, DriverPro
105105
ConfigAttribute oldAttribute = oldAttributes.get(definition.getName());
106106
ConfigAttribute newAttribute = newAttributes.get(definition.getName());
107107
if (oldAttribute != null) {
108-
if (!oldAttribute.deepEquals(newAttribute)) {
108+
if (!oldAttribute.valueEquals(newAttribute)) {
109109
different = true;
110110
break;
111111
}

src/main/java/onl/netfishers/netshot/diagnostic/DiagnosticBinaryResult.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import jakarta.persistence.Transient;
2424
import jakarta.xml.bind.annotation.XmlElement;
2525

26+
import java.util.Objects;
27+
2628
import com.fasterxml.jackson.annotation.JsonView;
2729

2830
import lombok.Getter;
@@ -73,27 +75,13 @@ public Object getData() {
7375
}
7476

7577
@Override
76-
public int hashCode() {
77-
final int prime = 31;
78-
int result = super.hashCode();
79-
result = prime * result + ((assumption == null) ? 0 : assumption.hashCode());
80-
return result;
81-
}
82-
83-
@Override
84-
public boolean equals(Object obj) {
78+
public boolean valueEquals(DiagnosticResult obj) {
8579
if (this == obj)
8680
return true;
8781
if (!(obj instanceof DiagnosticBinaryResult))
8882
return false;
8983
DiagnosticBinaryResult other = (DiagnosticBinaryResult) obj;
90-
if (assumption == null) {
91-
if (other.assumption != null)
92-
return false;
93-
}
94-
else if (!assumption.equals(other.assumption))
95-
return false;
96-
return true;
84+
return Objects.equals(this.assumption, other.assumption);
9785
}
9886

9987
}

src/main/java/onl/netfishers/netshot/diagnostic/DiagnosticLongTextResult.java

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
import jakarta.persistence.CascadeType;
2222
import jakarta.persistence.DiscriminatorValue;
2323
import jakarta.persistence.Entity;
24-
import jakarta.persistence.FetchType;
2524
import jakarta.persistence.OneToOne;
2625
import jakarta.persistence.Transient;
2726

27+
import java.util.Objects;
28+
2829
import org.hibernate.annotations.OnDelete;
2930
import org.hibernate.annotations.OnDeleteAction;
3031

@@ -37,7 +38,7 @@
3738
public class DiagnosticLongTextResult extends DiagnosticResult {
3839

3940
@Getter(onMethod=@__({
40-
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY),
41+
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true),
4142
@OnDelete(action = OnDeleteAction.CASCADE)
4243
}))
4344
@Setter
@@ -70,27 +71,13 @@ public Object getData() {
7071
}
7172

7273
@Override
73-
public int hashCode() {
74-
final int prime = 31;
75-
int result = super.hashCode();
76-
result = prime * result + ((longText == null) ? 0 : longText.hashCode());
77-
return result;
78-
}
79-
80-
@Override
81-
public boolean equals(Object obj) {
74+
public boolean valueEquals(DiagnosticResult obj) {
8275
if (this == obj)
8376
return true;
8477
if (!(obj instanceof DiagnosticLongTextResult))
8578
return false;
8679
DiagnosticLongTextResult other = (DiagnosticLongTextResult) obj;
87-
if (longText == null) {
88-
if (other.longText != null)
89-
return false;
90-
}
91-
else if (!longText.equals(other.longText))
92-
return false;
93-
return true;
80+
return Objects.equals(this.longText, other.longText);
9481
}
9582

9683
}

src/main/java/onl/netfishers/netshot/diagnostic/DiagnosticNumericResult.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import jakarta.persistence.Transient;
2424
import jakarta.xml.bind.annotation.XmlElement;
2525

26+
import java.util.Objects;
27+
2628
import com.fasterxml.jackson.annotation.JsonView;
2729

2830
import lombok.Getter;
@@ -68,27 +70,13 @@ public Object getData() {
6870
}
6971

7072
@Override
71-
public int hashCode() {
72-
final int prime = 31;
73-
int result = super.hashCode();
74-
result = prime * result + ((number == null) ? 0 : number.hashCode());
75-
return result;
76-
}
77-
78-
@Override
79-
public boolean equals(Object obj) {
73+
public boolean valueEquals(DiagnosticResult obj) {
8074
if (this == obj)
8175
return true;
8276
if (!(obj instanceof DiagnosticNumericResult))
8377
return false;
8478
DiagnosticNumericResult other = (DiagnosticNumericResult) obj;
85-
if (number == null) {
86-
if (other.number != null)
87-
return false;
88-
}
89-
else if (!number.equals(other.number))
90-
return false;
91-
return true;
79+
return Objects.equals(this.number, other.number);
9280
}
9381

9482
}

src/main/java/onl/netfishers/netshot/diagnostic/DiagnosticResult.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package onl.netfishers.netshot.diagnostic;
2020

2121
import java.util.Date;
22+
import java.util.Objects;
2223

2324
import jakarta.persistence.DiscriminatorColumn;
2425
import jakarta.persistence.DiscriminatorType;
@@ -145,4 +146,20 @@ public String getDiagnosticName() {
145146
return this.getDiagnostic().getName();
146147
}
147148

149+
public abstract boolean valueEquals(DiagnosticResult obj);
150+
151+
@Override
152+
public int hashCode() {
153+
return Objects.hash(diagnostic, device);
154+
}
155+
156+
@Override
157+
public boolean equals(Object obj) {
158+
if (this == obj) return true;
159+
if (!(obj instanceof DiagnosticResult)) return false;
160+
DiagnosticResult other = (DiagnosticResult) obj;
161+
return Objects.equals(diagnostic, other.diagnostic)
162+
&& Objects.equals(device, other.device);
163+
}
164+
148165
}

src/main/java/onl/netfishers/netshot/diagnostic/DiagnosticTextResult.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import jakarta.persistence.Transient;
2525
import jakarta.xml.bind.annotation.XmlElement;
2626

27+
import java.util.Objects;
28+
2729
import com.fasterxml.jackson.annotation.JsonView;
2830

2931
import lombok.Getter;
@@ -65,27 +67,13 @@ public Object getData() {
6567
}
6668

6769
@Override
68-
public int hashCode() {
69-
final int prime = 31;
70-
int result = super.hashCode();
71-
result = prime * result + ((text == null) ? 0 : text.hashCode());
72-
return result;
73-
}
74-
75-
@Override
76-
public boolean equals(Object obj) {
70+
public boolean valueEquals(DiagnosticResult obj) {
7771
if (this == obj)
7872
return true;
7973
if (!(obj instanceof DiagnosticTextResult))
8074
return false;
8175
DiagnosticTextResult other = (DiagnosticTextResult) obj;
82-
if (text == null) {
83-
if (other.text != null)
84-
return false;
85-
}
86-
else if (!text.equals(other.text))
87-
return false;
88-
return true;
76+
return Objects.equals(this.text, other.text);
8977
}
9078

9179
}

src/main/java/onl/netfishers/netshot/rest/RestService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9039,7 +9039,9 @@ public List<DiagnosticResult> getDeviceDiagnosticResults(@BeanParam PaginationPa
90399039
Session session = Database.getSession(true);
90409040
try {
90419041
Query<DiagnosticResult> query = session
9042-
.createQuery("from DiagnosticResult dr join fetch dr.diagnostic where dr.device.id = :id", DiagnosticResult.class)
9042+
.createQuery(
9043+
"from DiagnosticResult dr join fetch dr.diagnostic where dr.device.id = :id",
9044+
DiagnosticResult.class)
90439045
.setParameter("id", id);
90449046
paginationParams.apply(query);
90459047
return query.list();

src/main/java/onl/netfishers/netshot/work/Task.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import onl.netfishers.netshot.work.tasks.TakeGroupSnapshotTask;
5959
import onl.netfishers.netshot.work.tasks.TakeSnapshotTask;
6060

61+
import org.hibernate.Session;
6162
import org.hibernate.annotations.OnDelete;
6263
import org.hibernate.annotations.OnDeleteAction;
6364
import org.quartz.JobKey;
@@ -492,8 +493,8 @@ public void onSchedule() {
492493
/**
493494
* Prepare.
494495
*/
495-
public void prepare() {
496-
496+
public void prepare(Session session) {
497+
// Override to actually do something
497498
}
498499

499500
/**

src/main/java/onl/netfishers/netshot/work/TaskJob.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,27 @@ public void execute(JobExecutionContext context) throws JobExecutionException {
7474
task.setRunning();
7575
log.trace("The task runner ID for {} is {}", task.getId(), task.getRunnerId());
7676
session.merge(task);
77-
session.getTransaction().commit();
7877
log.trace("Got the task.");
79-
task.prepare();
78+
task.prepare(session);
8079
log.trace("The task has prepared its fields.");
80+
session.getTransaction().commit();
8181
}
8282
catch (Exception e) {
83-
log.error("Error while retrieving and updating the task.", e);
83+
log.error("Error while retrieving, updating or preparing the task.", e);
8484
try {
8585
session.getTransaction().rollback();
86+
session.beginTransaction();
87+
Task eTask = (Task) session.get(Task.class, id);
88+
eTask.setRunning();
89+
eTask.setFailed();
90+
eTask.setLog(e.getMessage());
91+
session.merge(eTask);
92+
session.getTransaction().commit();
8693
}
8794
catch (Exception e1) {
8895

8996
}
90-
throw new JobExecutionException("Unable to access the task.");
97+
throw new JobExecutionException("Unable to access or prepare the task.");
9198
}
9299
finally {
93100
session.close();
@@ -103,7 +110,7 @@ public void execute(JobExecutionContext context) throws JobExecutionException {
103110

104111
if (task.getStatus() == Status.RUNNING) {
105112
log.error("The task {} exited with a status of RUNNING.", id);
106-
task.setStatus(Status.FAILURE);
113+
task.setFailed();
107114
}
108115

109116
log.trace("Updating the task with the result.");

src/main/java/onl/netfishers/netshot/work/tasks/CheckComplianceTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public CheckComplianceTask(Device device, String comments, String author) {
8484
* @see onl.netfishers.netshot.work.Task#prepare()
8585
*/
8686
@Override
87-
public void prepare() {
87+
public void prepare(Session session) {
8888
Hibernate.initialize(device);
8989
}
9090

src/main/java/onl/netfishers/netshot/work/tasks/CheckGroupComplianceTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public String getTaskDescription() {
9696
* @see onl.netfishers.netshot.work.Task#prepare()
9797
*/
9898
@Override
99-
public void prepare() {
99+
public void prepare(Session session) {
100100
Hibernate.initialize(this.getDeviceGroup());
101101
}
102102

src/main/java/onl/netfishers/netshot/work/tasks/CheckGroupSoftwareTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public String getTaskDescription() {
9898
* @see onl.netfishers.netshot.work.Task#prepare()
9999
*/
100100
@Override
101-
public void prepare() {
101+
public void prepare(Session session) {
102102
Hibernate.initialize(this.getDeviceGroup());
103103
}
104104

src/main/java/onl/netfishers/netshot/work/tasks/DiscoverDeviceTypeTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ private boolean snmpv3Discover(DeviceSnmpv3Community cred) {
277277
* @see onl.netfishers.netshot.work.Task#prepare()
278278
*/
279279
@Override
280-
public void prepare() {
280+
public void prepare(Session session) {
281281
Hibernate.initialize(this.getCredentialSets());
282282
this.getDomain().getId();
283283
}

src/main/java/onl/netfishers/netshot/work/tasks/RunDeviceGroupScriptTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import onl.netfishers.netshot.work.Task;
4242

4343
import org.hibernate.Hibernate;
44+
import org.hibernate.Session;
4445
import org.hibernate.annotations.JdbcTypeCode;
4546
import org.hibernate.annotations.OnDelete;
4647
import org.hibernate.annotations.OnDeleteAction;
@@ -108,7 +109,7 @@ public String getTaskDescription() {
108109
* @see onl.netfishers.netshot.work.Task#prepare()
109110
*/
110111
@Override
111-
public void prepare() {
112+
public void prepare(Session session) {
112113
Hibernate.initialize(this.getDeviceGroup());
113114
Hibernate.initialize(this.getDeviceGroup().getCachedDevices());
114115
}

0 commit comments

Comments
 (0)