Skip to content

Commit 4d2b1bd

Browse files
committed
Prepare for new release
1 parent b102d0d commit 4d2b1bd

File tree

5 files changed

+51
-76
lines changed

5 files changed

+51
-76
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,16 @@ public class LogRequestsExample {
9191

9292
For more examples, see [examples](cdt-examples/src/main/java/com/github/kklisura/cdt/examples).
9393

94+
## Known-issues
95+
96+
### API hangs when printing PDFs
97+
98+
**What:** If you're using `cdt-java-client` before version `2.1.0` for printing to PDF and the resulting PDF is more than 4MB, API will hang and will never respond with requesting print.
99+
100+
**Why:** This is due to underlying WebSocket library having 4MB buffer for receiving data from browser.
101+
102+
**How to fix:** With the version `2.1.0` and above, this buffer was increased to 8MB and can be further increased if necessary by setting the appropriate [configuration property](cdt-examples/src/main/java/com/github/kklisura/cdt/examples/IncreasedIncomingBufferInTyrusExample.java).
103+
94104
## Running unit tests
95105

96106
`make verify`

cdt-examples/src/main/java/com/github/kklisura/cdt/examples/IncreasedIncomingBufferInTyrusExample.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.github.kklisura.cdt.protocol.types.page.PrintToPDFTransferMode;
77
import com.github.kklisura.cdt.services.ChromeDevToolsService;
88
import com.github.kklisura.cdt.services.ChromeService;
9-
import com.github.kklisura.cdt.services.factory.impl.ConfigurableTyrusClientFactory;
9+
import com.github.kklisura.cdt.services.factory.impl.DefaultWebSocketContainerFactory;
1010
import com.github.kklisura.cdt.services.types.ChromeTab;
1111
import java.io.File;
1212
import java.io.FileOutputStream;
@@ -21,10 +21,12 @@
2121
* @author Kenan Klisura
2222
*/
2323
public class IncreasedIncomingBufferInTyrusExample {
24+
2425
static {
26+
// Set the incoming buffer to 24MB
2527
System.setProperty(
26-
"com.github.kklisura.cdt.services.config.webSocketContainerFactory",
27-
ConfigurableTyrusClientFactory.class.getName());
28+
DefaultWebSocketContainerFactory.WEBSOCKET_INCOMING_BUFFER_PROPERTY,
29+
Long.toString((long) DefaultWebSocketContainerFactory.MB * 24));
2830
}
2931

3032
public static void main(String[] args) {

cdt-java-client/src/main/java/com/github/kklisura/cdt/services/factory/impl/ConfigurableTyrusClientFactory.java

Lines changed: 0 additions & 67 deletions
This file was deleted.

cdt-java-client/src/main/java/com/github/kklisura/cdt/services/factory/impl/DefaultWebSocketContainerFactory.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
* #L%
2121
*/
2222

23-
import static com.github.kklisura.cdt.services.factory.impl.ConfigurableTyrusClientFactory.INCOMING_BUFFER_SIZE_PROPERTY;
24-
import static com.github.kklisura.cdt.services.factory.impl.ConfigurableTyrusClientFactory.MB;
23+
import static com.github.kklisura.cdt.services.utils.ConfigurationUtils.systemProperty;
2524

2625
import com.github.kklisura.cdt.services.factory.WebSocketContainerFactory;
2726
import javax.websocket.WebSocketContainer;
@@ -30,11 +29,36 @@
3029

3130
/**
3231
* Default WebSocketContainer factory creates a WebSocketContainer from GrizzlyContainerProvider.
32+
* This class sets 8MB as internal receiving buffer, which was 4MB by default. By using {@link
33+
* #WEBSOCKET_INCOMING_BUFFER_PROPERTY} this can further be increased if required. The following
34+
* code sets the the incoming buffer size to 24 MB.
35+
*
36+
* <pre>
37+
* static {
38+
* System.setProperty(
39+
* DefaultWebSocketContainerFactory.WEBSOCKET_INCOMING_BUFFER_PROPERTY,
40+
* Long.toString((long) DefaultWebSocketContainerFactory.MB * 24)
41+
* );
42+
* }
43+
* </pre>
3344
*
3445
* @author Kenan Klisura
3546
*/
3647
public class DefaultWebSocketContainerFactory implements WebSocketContainerFactory {
37-
private static final int INCOMING_BUFFER_SIZE = 8 * MB;
48+
49+
public static final String WEBSOCKET_INCOMING_BUFFER_PROPERTY =
50+
"com.github.kklisura.cdt.services.config.incomingBuffer";
51+
52+
public static final int KB = 1024;
53+
public static final int MB = 1024 * KB;
54+
55+
private static final int DEFAULT_INCOMING_BUFFER_SIZE = 8 * MB;
56+
57+
private static final long INCOMING_BUFFER_SIZE =
58+
systemProperty(WEBSOCKET_INCOMING_BUFFER_PROPERTY, DEFAULT_INCOMING_BUFFER_SIZE);
59+
60+
public static final String INCOMING_BUFFER_SIZE_PROPERTY =
61+
"org.glassfish.tyrus.incomingBufferSize";
3862

3963
@Override
4064
public WebSocketContainer getWebSocketContainer() {

cdt-java-client/src/main/java/com/github/kklisura/cdt/services/impl/WebSocketServiceImpl.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@
3030
import java.io.IOException;
3131
import java.net.URI;
3232
import java.util.function.Consumer;
33-
import javax.websocket.*;
33+
import javax.websocket.CloseReason;
34+
import javax.websocket.DeploymentException;
35+
import javax.websocket.Endpoint;
36+
import javax.websocket.EndpointConfig;
37+
import javax.websocket.MessageHandler;
38+
import javax.websocket.Session;
39+
import javax.websocket.WebSocketContainer;
3440
import org.slf4j.Logger;
3541
import org.slf4j.LoggerFactory;
3642

@@ -173,10 +179,10 @@ private void onClose(Session session, CloseReason closeReason) {
173179
closeReason.getReasonPhrase());
174180

175181
if (isTyrusBufferOverflowCloseReason(closeReason)) {
176-
LOGGER.info(
182+
LOGGER.error(
177183
"Web socket connection closed due to BufferOverflow raised by Tyrus client. This indicates the message "
178184
+ "about to be received is larger than the incoming buffer in Tyrus client. "
179-
+ "See ConfigurableTyrusClientFactory class source on how to increase the incoming buffer size in Tyrus or visit https://github.com/kklisura/chrome-devtools-java-client/blob/master/cdt-examples/src/main/java/com/github/kklisura/cdt/examples/IncreasedIncomingBufferInTyrusExample.java");
185+
+ "See DefaultWebSocketContainerFactory class source on how to increase the incoming buffer size in Tyrus or visit https://github.com/kklisura/chrome-devtools-java-client/blob/master/cdt-examples/src/main/java/com/github/kklisura/cdt/examples/IncreasedIncomingBufferInTyrusExample.java");
180186
}
181187
}
182188

0 commit comments

Comments
 (0)