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
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
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
alla aktuella värden samt det cachade resultatet som returnerades.
2019-02-20-2
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
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...
......
......@@ -72,26 +72,37 @@ class LongDelta {
// We have values, calculate the deltas
// Handle the Oracle Bug (ref needed)
if(curValue.compareTo(lastValue) >= 0) {
if(curValue.compareTo(lastValue) >= 0 && lastValue.compareTo(last2Value) >= 0) {
// All three values are okay, report as normal
numMilliSeconds = this.curFetch.getTime() - this.lastFetch.getTime();
delta = this.curValue.subtract(this.lastValue).doubleValue();
lastGoodMilliseconds = numMilliSeconds;
lastGoodDelta = delta;
} else if(curValue.compareTo(last2Value) >= 0) {
} else if(curValue.compareTo(last2Value) >= 0 && last2Value.compareTo(lastValue) >= 0) {
// Current and last2 are okay, report this value
numMilliSeconds = this.curFetch.getTime() - this.last2Fetch.getTime();
delta = this.curValue.subtract(this.last2Value).doubleValue();
lastGoodMilliseconds = numMilliSeconds;
lastGoodDelta = delta;
} else if (lastValue.compareTo(last2Value) >= 0) {
} else if (lastValue.compareTo(last2Value) >= 0 && lastValue.compareTo(curValue) >= 0) {
// last and last2 value are okay (same as cached previous reported delta)
numMilliSeconds = this.lastFetch.getTime() - this.last2Fetch.getTime();
delta = this.lastValue.subtract(this.last2Value).doubleValue();
lastGoodMilliseconds = numMilliSeconds;
lastGoodDelta = delta;
} else if(last2Value.compareTo(lastValue) >= 0 && last2Value.compareTo(curValue) >= 0 && curValue.compareTo(lastValue) >= 0) {
// There was an incorrect positive measurement (last2value)
numMilliSeconds = this.curFetch.getTime() - this.lastFetch.getTime();
delta = this.curValue.subtract(this.lastValue).doubleValue();
lastGoodMilliseconds = numMilliSeconds;
lastGoodDelta = delta;
LOGGER.log(Level.WARNING, "Too high value detected (last printed value), causing an incorrect (too high) delta reported 3 measurements ago. Name: "
+ this.name + " Values:["+curValue+"]["+lastValue+"]["+last2Value+"]");
} else {
// None of the 2 last measurements give a positive delta. Log this and return the last calculated delta.
// Unhandled situation. Return cached delta.
numMilliSeconds = lastGoodMilliseconds;
delta = lastGoodDelta;
LOGGER.log(Level.WARNING, "No positive deltas to calculate, returning cached value:["+lastGoodDelta+"]. Name: "
LOGGER.log(Level.WARNING, "No deltas to calculate, returning cached value:["+lastGoodDelta+"]. Name: "
+ this.name + " Values:["+curValue+"]["+lastValue+"]["+last2Value+"]");
}
......