OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.15k stars 592 forks source link

netty - z/OS WOLA support #18089

Open wtlucy opened 3 years ago

wtlucy commented 3 years ago

Implement the functionality provided by zosLocalAdapters - WebSphere Optimized Local Adapters - to work with netty

hutchig commented 2 years ago

For WOLA we are in closed Liberty. Further detailed discussion at: https://github.ibm.com/websphere/WS-CD-Open/issues/25549

hutchig commented 2 years ago

There is a great page on WOLA here: https://www.ibm.com/support/pages/websphere-zos-optimized-local-adapters

hutchig commented 2 years ago

Tracking complete CF import removal (or class replacement) in PR

14/61 complete

websphere channelfw package imports removed (or minimal interface implementer subclass class constrained to cfw package)

Local Channel bundle

LocalCommChannel.java

  • [x] com.ibm.websphere.channelfw.ChannelData;

LocalCommChannelFactory.java

  • [x] com.ibm.websphere.channelfw.ChannelData;
  • [x] com.ibm.websphere.channelfw.ChannelFactoryData;
  • [ ] ~~ com.ibm.websphere.channelfw.OutboundChannelDefinition ~~ <- Mistakenly listed

LocalCommChannelFactoryProvider.java

  • [x] com.ibm.websphere.channelfw.osgi.ChannelFactoryProvider;

WOLA bundle

WOLAChainBuilder.java

  • [x] com.ibm.websphere.channelfw.ChainData;
  • [x] com.ibm.websphere.channelfw.FlowType;
  • [x] com.ibm.websphere.channelfw.osgi.CHFWBundle;

WOLAChannel.java

  • [x] com.ibm.websphere.channelfw.ChannelData;

WOLAChannelFactory.java

  • [x] com.ibm.websphere.channelfw.ChannelData;
  • [x] com.ibm.websphere.channelfw.ChannelFactoryData;
  • [x] com.ibm.websphere.channelfw.OutboundChannelDefinition;

WOLAChannelFactoryProvider.java

  • [x] com.ibm.websphere.channelfw.osgi.ChannelFactoryProvider;

WOLAEndpoint.java

  • [x] com.ibm.websphere.channelfw.osgi.CHFWBundle;
  • [x] com.ibm.websphere.channelfw.osgi.ChannelFactoryProvider;

wsspi channelfw package imports

Local Channel bundle LocalCommChannel.java

  • [x] com.ibm.wsspi.channelfw.ChannelFrameworkFactory;
  • [x] com.ibm.wsspi.channelfw.ConnectionLink;
  • [x] com.ibm.wsspi.channelfw.DiscriminationProcess;
  • [x] com.ibm.wsspi.channelfw.Discriminator;
  • [x] com.ibm.wsspi.channelfw.InboundChannel;
  • [x] com.ibm.wsspi.channelfw.VirtualConnection;
  • [x] com.ibm.wsspi.channelfw.VirtualConnectionFactory;
  • [x] com.ibm.wsspi.channelfw.exception.ChainException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;

LocalCommChannelFactory.java

  • [x] com.ibm.wsspi.channelfw.Channel;
  • [x] com.ibm.wsspi.channelfw.ChannelFactory;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelFactoryException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelFactoryPropertyIgnoredException;

LocalCommChannelFactoryProvider.java

  • [x] com.ibm.wsspi.channelfw.ChannelFactory;

LocalCommClientConnHandleMapImpl.java

  • [x] com.ibm.wsspi.channelfw.ConnectionReadyCallback;

LocalCommConnLink.java

  • [x] com.ibm.wsspi.channelfw.ConnectionReadyCallback;
  • [x] com.ibm.wsspi.channelfw.DiscriminationProcess;
  • [x] com.ibm.wsspi.channelfw.VirtualConnection;
  • [x] com.ibm.wsspi.channelfw.base.InboundProtocolLink;

LocalChannelProvider.java

  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;

LocalCommClientConnHandleMap.java [Moved as returns cf type]

  • [NA] com.ibm.wsspi.channelfw.ConnectionReadyCallback;

WOLA bundle

WOLAChainBuilder.java

  • [x] com.ibm.wsspi.channelfw.ChainEventListener;
  • [x] com.ibm.wsspi.channelfw.ChannelFramework;
  • [x] com.ibm.wsspi.channelfw.exception.ChainException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;

WOLAChannel.java

  • [x] com.ibm.wsspi.channelfw.ChannelFramework;
  • [x] com.ibm.wsspi.channelfw.ConnectionLink;
  • [x] com.ibm.wsspi.channelfw.DiscriminationProcess;
  • [x] com.ibm.wsspi.channelfw.Discriminator;
  • [x] com.ibm.wsspi.channelfw.InboundChannel;
  • [x] com.ibm.wsspi.channelfw.VirtualConnection;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;

WOLAChannelFactory.java

  • [x] com.ibm.wsspi.channelfw.Channel;
  • [x] com.ibm.wsspi.channelfw.ChannelFactory;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelFactoryException;
  • [x] com.ibm.wsspi.channelfw.exception.ChannelFactoryPropertyIgnoredException;

WOLAChannelFactoryProvider.java

  • [x] com.ibm.wsspi.channelfw.ChannelFactory; ~~ <- moved wholesale

WolaConnLink.java ~~ <- super class already occupied, moved to cfw

  • [x] com.ibm.wsspi.channelfw.ConnectionLink;
  • [x] com.ibm.wsspi.channelfw.VirtualConnection;
  • [x] com.ibm.wsspi.channelfw.base.InboundProtocolLink;

WOLADiscriminator.java

  • [x] com.ibm.wsspi.channelfw.Channel;
  • [x] com.ibm.wsspi.channelfw.Discriminator;
  • [x] com.ibm.wsspi.channelfw.VirtualConnection;

WOLAEndpoint.java

  • [x] com.ibm.wsspi.channelfw.ChannelFactory;
hutchig commented 2 years ago

WOLA Netty Implementation Chunks

[Initial number is strawman sizing]

ChannelLocal

Package com.ibm.ws.zos.channel.local is just utility/data classes and will be covered by main tasks below:

(The first work item here was ticked in error (wrongly using the removal on non wsspi class references as the criteria rather than implementation complete of netty equivalent code).

19 working days

ChannelWola

Again, the core com.ibm.ws.zos.channel.wola package has mostly data facades and has very little use of CF calls. The bridges to IMS Interrupts/OTMA and JCA should be unchanged.

17 working days

Bootstrap

13 working days

Functional Test

5 working days

Total sizing of remaining work = 55 working days = 11 weeks.

hutchig commented 1 year ago

Review of SIP, JMS and HTTP2 Netty based implementation PRs notes that wsspi has been retained as-is - which is the approach in stage 1. So we will retain the use of the com.ibm.ws.channelfw/src/com/ibm/wsspi/channelfw package without changing the method signatures. This means that classes that are used in these method signatures will also be retained: these are: { CFEndPoint, CFEndPointCriteria, ChainData, ChainGroupData, ChannelData, ChannelFactoryData, FlowType, OutboundChannelDataDefinition, RegionType, osgi.ChannelFactoryProvider, internal.ChannelFrameworkConstants }

This will be discussed in https://github.com/OpenLiberty/open-liberty/issues/25140

hutchig commented 1 year ago

Projects cleared of non-wsspi+signature+utilised classes:

com.ibm.ws.zos.channel.local