HTTPCORE-742: BasicHttpRequest#setUri does not correctly reset internal state
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
index 5b1db70..0d4279e 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
@@ -27,6 +27,9 @@
 
 package org.apache.hc.core5.http.message;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.Method;
@@ -36,9 +39,6 @@
 import org.apache.hc.core5.util.Args;
 import org.apache.hc.core5.util.TextUtils;
 
-import java.net.URI;
-import java.net.URISyntaxException;
-
 /**
  * Basic implementation of {@link HttpRequest}.
  *
@@ -288,6 +288,7 @@
             buf.append('?').append(query);
         }
         this.path = buf.toString();
+        this.requestUri = null;
     }
 
     private void assembleRequestUri(final StringBuilder buf) {
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
index cf84036..54a0095 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
@@ -35,6 +35,7 @@
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Method;
 import org.apache.hc.core5.net.URIAuthority;
+import org.apache.hc.core5.net.URIBuilder;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -211,5 +212,18 @@
         Assertions.assertEquals("http://somehost/stuff", request.getRequestUri());
     }
 
+    @Test
+    public void testModifyingExistingRequest() throws Exception {
+        final URI uri = URI.create("https://example.org");
+        final HttpRequest request = new BasicHttpRequest(Method.GET, uri);
+
+        final URI newUri = new URIBuilder(request.getUri())
+                .addParameter("name", "value")
+                .build();
+
+        request.setUri(newUri);
+        Assertions.assertEquals(newUri, request.getUri());
+    }
+
 }