diff --git a/engine/table/src/main/java/io/deephaven/engine/util/input/InputTableUpdater.java b/engine/table/src/main/java/io/deephaven/engine/util/input/InputTableUpdater.java index d006b2dadbd..271e3f312c3 100644 --- a/engine/table/src/main/java/io/deephaven/engine/util/input/InputTableUpdater.java +++ b/engine/table/src/main/java/io/deephaven/engine/util/input/InputTableUpdater.java @@ -91,9 +91,14 @@ default void validateDelete(Table tableToDelete) { /** * Write {@code newData} to this table. Added rows with keys that match existing rows will instead replace those * rows, if supported. + * + *
+ * This method will block until the add is "completed", where the definition of "completed" is implementation + * dependenent. + * *
- * This method will block until the rows are added. As a result, this method is not suitable for use from a - * {@link io.deephaven.engine.table.TableListener table listener} or any other + * For implementations where "completed" means "visible in the next update graph cycle", this method is not suitable + * for use from a {@link io.deephaven.engine.table.TableListener table listener} or any other * {@link io.deephaven.engine.updategraph.NotificationQueue.Notification notification}-dispatched callback * dispatched by this InputTable's {@link io.deephaven.engine.updategraph.UpdateGraph update graph}. It may be * suitable to delete from another update graph if doing so does not introduce any cycles. @@ -106,6 +111,11 @@ default void validateDelete(Table tableToDelete) { /** * Write {@code newData} to this table. Added rows with keys that match existing rows replace those rows, if * supported. + * + *
+ * The callback to {@code listener} will happen when the add has "completed", where the definition of "completed" is + * implementation dependenent. It's possible that the callback happens immediately on the same thread. + * *
* This method will not block, and can be safely used from a {@link io.deephaven.engine.table.TableListener * table listener} or any other {@link io.deephaven.engine.updategraph.NotificationQueue.Notification @@ -120,9 +130,14 @@ default void validateDelete(Table tableToDelete) { /** * Delete the keys contained in {@code table} from this input table. + * + *
+ * This method will block until the delete is "completed", where the definition of "completed" is implementation + * dependenent. + * *
- * This method will block until the rows are deleted. As a result, this method is not suitable for use from a - * {@link io.deephaven.engine.table.TableListener table listener} or any other + * For implementations where "completed" means "visible in the next update graph cycle", this method is not suitable + * for use from a {@link io.deephaven.engine.table.TableListener table listener} or any other * {@link io.deephaven.engine.updategraph.NotificationQueue.Notification notification}-dispatched callback * dispatched by this InputTable's {@link io.deephaven.engine.updategraph.UpdateGraph update graph}. It may be * suitable to delete from another update graph if doing so does not introduce any cycles. @@ -137,6 +152,11 @@ default void delete(Table table) throws IOException { /** * Delete the keys contained in table from this input table. + * + *
+ * The callback to {@code listener} will happen when the delete has "completed", where the definition of "completed" + * is implementation dependenent. It's possible that the callback happens immediately on the same thread. + * *
* This method will not block, and can be safely used from a {@link io.deephaven.engine.table.TableListener
* table listener} or any other {@link io.deephaven.engine.updategraph.NotificationQueue.Notification
diff --git a/engine/table/src/main/java/io/deephaven/stream/TableStreamPublisherImpl.java b/engine/table/src/main/java/io/deephaven/stream/TableStreamPublisherImpl.java
index fb85b48eb30..3446b2828bb 100644
--- a/engine/table/src/main/java/io/deephaven/stream/TableStreamPublisherImpl.java
+++ b/engine/table/src/main/java/io/deephaven/stream/TableStreamPublisherImpl.java
@@ -113,14 +113,21 @@ public void add(Table newData) {
}
@Override
- public List