protected void onAddError(ComplexEventChunk<StreamEvent> addingEventChunk, Exception e) {
        OnErrorAction errorAction = onErrorAction;
        if (e instanceof ConnectionUnavailableException) {
            isConnected.set(false);
            if (errorAction == OnErrorAction.STORE) {
                handleStoreAddError(addingEventChunk, true, e);
                LOG.error("Error on '" + siddhiAppContext.getName() + "' while performing add for events  at '"
                        + tableDefinition.getId() + "'. Events saved '" + addingEventChunk.toString() + "'");
                if (LOG.isDebugEnabled()) {
                    LOG.debug(e);
                }
                if (!isTryingToConnect.get()) {
                    connectWithRetry();
                }
            } else {
                if (isTryingToConnect.get()) {
                    LOG.warn("Error on '" + siddhiAppContext.getName() + "' while performing add for events '" +
                            addingEventChunk + "', operation busy waiting at Table '"
                            + tableDefinition.getId() + "' as its trying to reconnect!");
                    waitWhileConnect();
                    LOG.info("SiddhiApp '" + siddhiAppContext.getName() + "' table '" + tableDefinition.getId()
                            + "' has become available for add operation for events '" + addingEventChunk + "'");
                    add(addingEventChunk);
                } else {
                    connectWithRetry();
                    add(addingEventChunk);
                }
            }
        } else if (e instanceof DatabaseRuntimeException) {
            if (errorAction == OnErrorAction.STORE) {
                handleStoreAddError(addingEventChunk, false, e);
                LOG.error("Error on '" + siddhiAppContext.getName() + "' while performing add for events  at '"
                        + tableDefinition.getId() + "'. Events saved '" + addingEventChunk.toString() + "'");
                if (LOG.isDebugEnabled()) {
                    LOG.debug(e);
                }
            } else {
                throw (DatabaseRuntimeException) e;
            }
        }
    }
Interface class to represent Tables in Siddhi. There are multiple implementations. Ex: {@link InMemoryTable}. Table
will support basic operations of add, delete, update, update or add and contains. *
modules/siddhi-core/src/main/java/io/siddhi/core/table/Table.java