Issue #8 is still not fixed. Sometimes the incorrect value is to high,
not always to low. This is currently not handled, only logged.
Showing
5 changed files
with
23 additions
and
5 deletions
No preview for this file type
No preview for this file type
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 | ... | ... |
-
Please register or sign in to post a comment