Skip to content

Commit dc2ad35

Browse files
committed
Merge branch '3.1.x' into upstream-3.1.x
2 parents 87a4631 + 019fd91 commit dc2ad35

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

java-manta-client/src/main/java/com/joyent/manta/client/MantaClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ public Stream<MantaObject> listObjects(final String path) throws IOException {
700700
*/
701701
try {
702702
if (!itr.hasNext()) {
703+
itr.close();
703704
return Stream.empty();
704705
}
705706
} catch (UncheckedIOException e) {

java-manta-client/src/test/java/com/joyent/manta/client/MantaClientTest.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.joyent.manta.client;
22

3-
import com.joyent.manta.config.ConfigContext;
43
import com.joyent.manta.config.TestConfigContext;
54
import org.mockito.Mockito;
65
import org.testng.annotations.AfterTest;
@@ -24,14 +23,30 @@ public void teardown() {
2423
}
2524

2625
@Test
27-
public void listObjectsDoesNotLeakConnections() throws IOException {
26+
public void listObjectsDoesNotLeakConnectionsWhenThereAreResults() throws IOException {
2827
// BasicHttpClientConnectionManager maintains a single connection
2928

3029
final MantaDirectoryListingIterator iteratorMock = mock(MantaDirectoryListingIterator.class);
3130
when(iteratorMock.hasNext()).thenReturn(true);
3231

33-
final ConfigContext config = TestConfigContext.generateKeyPairBackedConfig().right.setMantaUser("user");
34-
final MantaClient client = new MantaClient(config);
32+
final MantaClient client = new MantaClient(TestConfigContext.generateKeyPairBackedConfig().right);
33+
final MantaClient clientSpy = spy(client);
34+
doReturn(iteratorMock).when(clientSpy).streamingIterator(anyString());
35+
36+
final Stream<MantaObject> listing = clientSpy.listObjects("/");
37+
listing.close();
38+
39+
verify(iteratorMock).close();
40+
}
41+
42+
@Test
43+
public void listObjectsDoesNotLeakConnectionsWhenNoResults() throws IOException {
44+
// BasicHttpClientConnectionManager maintains a single connection
45+
46+
final MantaDirectoryListingIterator iteratorMock = mock(MantaDirectoryListingIterator.class);
47+
when(iteratorMock.hasNext()).thenReturn(false);
48+
49+
final MantaClient client = new MantaClient(TestConfigContext.generateKeyPairBackedConfig().right);
3550
final MantaClient clientSpy = spy(client);
3651
doReturn(iteratorMock).when(clientSpy).streamingIterator(anyString());
3752

0 commit comments

Comments
 (0)