Commit 549ae858 549ae858272d866abaf8b40f98c5a1f36219eda9 by Christian Gerdes

Issue #8 is still not fixed. Sometimes the incorrect value is to high,

not always to low. This is currently not handled, only logged.
1 parent 0d4a053f
No preview for this file type
...@@ -88,3 +88,10 @@ så rapportera senaste/föregående delta igen. Detta för att undvika att påve ...@@ -88,3 +88,10 @@ så rapportera senaste/föregående delta igen. Detta för att undvika att påve
88 Har nu skrivit om logiken så att vi kollar om vi kan hitta ett positivt delta bland de 3 mätvärden som finns, om vi gör det returnerar vi detta med det senaste mest aktuella 88 Har nu skrivit om logiken så att vi kollar om vi kan hitta ett positivt delta bland de 3 mätvärden som finns, om vi gör det returnerar vi detta med det senaste mest aktuella
89 värdet först. Lyckas vi inte med det, returnerar vi det cachade värdet vi returnerade förra gången. Om det senare sker loggas detta tillsammans med namn på räknaren samt 89 värdet först. Lyckas vi inte med det, returnerar vi det cachade värdet vi returnerade förra gången. Om det senare sker loggas detta tillsammans med namn på räknaren samt
90 alla aktuella värden samt det cachade resultatet som returnerades. 90 alla aktuella värden samt det cachade resultatet som returnerades.
91
92 2019-02-20-2
93
94 Lagt in fler kontroller samt även att logga om vi får för höga värden först och sedan normala igen (vilket blir negativt fast det är föregående som är fel). Detta loggas
95 nu och sker ibland på den tunga carlos db. Behöver tänka om hur man ska kunna hantera detta utan att se på 4 värden bakåt...
96
97
......
...@@ -72,26 +72,37 @@ class LongDelta { ...@@ -72,26 +72,37 @@ class LongDelta {
72 // We have values, calculate the deltas 72 // We have values, calculate the deltas
73 73
74 // Handle the Oracle Bug (ref needed) 74 // Handle the Oracle Bug (ref needed)
75 if(curValue.compareTo(lastValue) >= 0) { 75 if(curValue.compareTo(lastValue) >= 0 && lastValue.compareTo(last2Value) >= 0) {
76 // All three values are okay, report as normal
76 numMilliSeconds = this.curFetch.getTime() - this.lastFetch.getTime(); 77 numMilliSeconds = this.curFetch.getTime() - this.lastFetch.getTime();
77 delta = this.curValue.subtract(this.lastValue).doubleValue(); 78 delta = this.curValue.subtract(this.lastValue).doubleValue();
78 lastGoodMilliseconds = numMilliSeconds; 79 lastGoodMilliseconds = numMilliSeconds;
79 lastGoodDelta = delta; 80 lastGoodDelta = delta;
80 } else if(curValue.compareTo(last2Value) >= 0) { 81 } else if(curValue.compareTo(last2Value) >= 0 && last2Value.compareTo(lastValue) >= 0) {
82 // Current and last2 are okay, report this value
81 numMilliSeconds = this.curFetch.getTime() - this.last2Fetch.getTime(); 83 numMilliSeconds = this.curFetch.getTime() - this.last2Fetch.getTime();
82 delta = this.curValue.subtract(this.last2Value).doubleValue(); 84 delta = this.curValue.subtract(this.last2Value).doubleValue();
83 lastGoodMilliseconds = numMilliSeconds; 85 lastGoodMilliseconds = numMilliSeconds;
84 lastGoodDelta = delta; 86 lastGoodDelta = delta;
85 } else if (lastValue.compareTo(last2Value) >= 0) { 87 } else if (lastValue.compareTo(last2Value) >= 0 && lastValue.compareTo(curValue) >= 0) {
88 // last and last2 value are okay (same as cached previous reported delta)
86 numMilliSeconds = this.lastFetch.getTime() - this.last2Fetch.getTime(); 89 numMilliSeconds = this.lastFetch.getTime() - this.last2Fetch.getTime();
87 delta = this.lastValue.subtract(this.last2Value).doubleValue(); 90 delta = this.lastValue.subtract(this.last2Value).doubleValue();
88 lastGoodMilliseconds = numMilliSeconds; 91 lastGoodMilliseconds = numMilliSeconds;
89 lastGoodDelta = delta; 92 lastGoodDelta = delta;
93 } else if(last2Value.compareTo(lastValue) >= 0 && last2Value.compareTo(curValue) >= 0 && curValue.compareTo(lastValue) >= 0) {
94 // There was an incorrect positive measurement (last2value)
95 numMilliSeconds = this.curFetch.getTime() - this.lastFetch.getTime();
96 delta = this.curValue.subtract(this.lastValue).doubleValue();
97 lastGoodMilliseconds = numMilliSeconds;
98 lastGoodDelta = delta;
99 LOGGER.log(Level.WARNING, "Too high value detected (last printed value), causing an incorrect (too high) delta reported 3 measurements ago. Name: "
100 + this.name + " Values:["+curValue+"]["+lastValue+"]["+last2Value+"]");
90 } else { 101 } else {
91 // None of the 2 last measurements give a positive delta. Log this and return the last calculated delta. 102 // Unhandled situation. Return cached delta.
92 numMilliSeconds = lastGoodMilliseconds; 103 numMilliSeconds = lastGoodMilliseconds;
93 delta = lastGoodDelta; 104 delta = lastGoodDelta;
94 LOGGER.log(Level.WARNING, "No positive deltas to calculate, returning cached value:["+lastGoodDelta+"]. Name: " 105 LOGGER.log(Level.WARNING, "No deltas to calculate, returning cached value:["+lastGoodDelta+"]. Name: "
95 + this.name + " Values:["+curValue+"]["+lastValue+"]["+last2Value+"]"); 106 + this.name + " Values:["+curValue+"]["+lastValue+"]["+last2Value+"]");
96 } 107 }
97 108
......