@@ -875,33 +875,34 @@ else if (uri.getRawQuery() != null)
875
875
}
876
876
877
877
public void close () {
878
- isClose .set (true );
879
- try {
880
- connectionsPool .destroy ();
881
- openChannels .close ();
882
-
883
- for (Channel channel : openChannels ) {
884
- ChannelHandlerContext ctx = channel .getPipeline ().getContext (NettyAsyncHttpProvider .class );
885
- if (ctx .getAttachment () instanceof NettyResponseFuture <?>) {
886
- NettyResponseFuture <?> future = (NettyResponseFuture <?>) ctx .getAttachment ();
887
- future .cancelTimeouts ();
878
+ if (isClose .compareAndSet (false , true )) {
879
+ try {
880
+ connectionsPool .destroy ();
881
+ openChannels .close ();
882
+
883
+ for (Channel channel : openChannels ) {
884
+ ChannelHandlerContext ctx = channel .getPipeline ().getContext (NettyAsyncHttpProvider .class );
885
+ if (ctx .getAttachment () instanceof NettyResponseFuture <?>) {
886
+ NettyResponseFuture <?> future = (NettyResponseFuture <?>) ctx .getAttachment ();
887
+ future .cancelTimeouts ();
888
+ }
888
889
}
889
- }
890
890
891
- config .executorService ().shutdown ();
892
- config .reaper ().shutdown ();
893
- if (this .allowReleaseSocketChannelFactory ) {
894
- socketChannelFactory .releaseExternalResources ();
895
- plainBootstrap .releaseExternalResources ();
896
- secureBootstrap .releaseExternalResources ();
897
- webSocketBootstrap .releaseExternalResources ();
898
- secureWebSocketBootstrap .releaseExternalResources ();
899
- }
891
+ config .executorService ().shutdown ();
892
+ config .reaper ().shutdown ();
893
+ if (this .allowReleaseSocketChannelFactory ) {
894
+ socketChannelFactory .releaseExternalResources ();
895
+ plainBootstrap .releaseExternalResources ();
896
+ secureBootstrap .releaseExternalResources ();
897
+ webSocketBootstrap .releaseExternalResources ();
898
+ secureWebSocketBootstrap .releaseExternalResources ();
899
+ }
900
900
901
- hashedWheelTimer .stop ();
901
+ hashedWheelTimer .stop ();
902
902
903
- } catch (Throwable t ) {
904
- log .warn ("Unexpected error on close" , t );
903
+ } catch (Throwable t ) {
904
+ log .warn ("Unexpected error on close" , t );
905
+ }
905
906
}
906
907
}
907
908
0 commit comments