aratno commented on code in PR #1635:
URL: 
https://github.com/apache/cassandra-java-driver/pull/1635#discussion_r1524601669


##########
core/src/main/java/com/datastax/oss/driver/internal/core/type/codec/UdtCodec.java:
##########
@@ -105,10 +105,7 @@ public UdtValue decode(@Nullable ByteBuffer bytes, 
@NonNull ProtocolVersion prot
       int i = 0;
       while (input.hasRemaining()) {
         if (i == cqlType.getFieldTypes().size()) {
-          throw new IllegalArgumentException(
-              String.format(
-                  "Too many fields in encoded UDT value, expected %d",
-                  cqlType.getFieldTypes().size()));
+          break;

Review Comment:
   Thought about this some more. The driver seeing extra fields in a UDT is 
expected for a short period after a schema change to add fields, since the 
control connection may find out later than the coordinator or replicas, and 
EVENTs are sent over the control connection async. It may be worth a warning if 
this state persists for too long, since that's an indication that a schema 
change EVENT wasn't delivered, but delivery failures are expected to be 
tolerated as well.
   
   I think it makes sense to drop this to a DEBUG or TRACE log, rather than 
using a no-spam logger.
   
   In the more general case of EVENT delivery failing and client metadata going 
out of sync, there's more we could do to retry EVENTs or support bounded 
metadata lag, but all of that is out of scope for this ticket.
   
   The only other change I'm considering is whether we should add a hint to 
refresh client metadata in this situation where the server has indicated that 
it has a new schema the client isn't yet aware of. Metadata refreshes should be 
debounced so we don't attempt a refresh on every response decode. Refreshing 
client metadata would only help in the case when the control instance does know 
about the schema but EVENT delivery failed, not in cases where the control 
instance has not yet found out about the new schema but a particular 
coordinator has, which is more likely the case for larger clusters.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to