State removal on oversize
This commit is contained in:
parent
ea539b2a96
commit
b4cbc72b8f
@ -114,7 +114,7 @@ public class CalculatedFieldEntityMessageProcessor extends AbstractContextAwareM
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
var state = getOrInitState(ctx);
|
var state = getOrInitState(ctx);
|
||||||
if (!state.isSizeExceedsLimit()) {
|
if (state.isSizeOk()) {
|
||||||
processStateIfReady(ctx, Collections.singletonList(ctx.getCfId()), state, null, null, msg.getCallback());
|
processStateIfReady(ctx, Collections.singletonList(ctx.getCfId()), state, null, null, msg.getCallback());
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException(ctx.getSizeExceedsLimitMessage());
|
throw new RuntimeException(ctx.getSizeExceedsLimitMessage());
|
||||||
@ -273,10 +273,25 @@ public class CalculatedFieldEntityMessageProcessor extends AbstractContextAwareM
|
|||||||
if (stateSizeOk) {
|
if (stateSizeOk) {
|
||||||
cfStateService.persistState(ctxId, state, callback);
|
cfStateService.persistState(ctxId, state, callback);
|
||||||
} else {
|
} else {
|
||||||
throw CalculatedFieldException.builder().ctx(ctx).eventEntity(entityId).errorMessage(ctx.getSizeExceedsLimitMessage()).build();
|
removeStateAndRaiseSizeException(ctxId, CalculatedFieldException.builder().ctx(ctx).eventEntity(entityId).errorMessage(ctx.getSizeExceedsLimitMessage()).build(), callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void removeStateAndRaiseSizeException(CalculatedFieldEntityCtxId ctxId, CalculatedFieldException ex, TbCallback callback) {
|
||||||
|
// We remove the state, but remember that it is over-sized in a local map.
|
||||||
|
cfStateService.removeState(ctxId, new TbCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
callback.onFailure(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable t) {
|
||||||
|
callback.onFailure(ex);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, ArgumentEntry> mapToArguments(CalculatedFieldCtx ctx, List<TsKvProto> data) {
|
private Map<String, ArgumentEntry> mapToArguments(CalculatedFieldCtx ctx, List<TsKvProto> data) {
|
||||||
return mapToArguments(ctx.getMainEntityArguments(), data);
|
return mapToArguments(ctx.getMainEntityArguments(), data);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user