You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by GitBox <gi...@apache.org> on 2020/01/24 16:20:49 UTC

[GitHub] [flink] AHeise opened a new pull request #10945: [FLINK-15274][docs]Added separate plugin page.

AHeise opened a new pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945
 
 
   Plugin page will be expanded in the future for connectors and other types.
   Central page to point someone who asks: what are plugins?
   
   <!--
   *Thank you very much for contributing to Apache Flink - we are happy that you want to help us improve Flink. To help the community review your contribution in the best possible way, please go through the checklist below, which will get the contribution into a shape in which it can be best reviewed.*
   
   *Please understand that we do not do this to make contributions to Flink a hassle. In order to uphold a high standard of quality for code contributions, while at the same time managing a large number of contributions, we need contributors to prepare the contributions well, and give reviewers enough contextual information for the review. Please also understand that contributions that do not follow this guide will take longer to review and thus typically be picked up with lower priority by the community.*
   
   ## Contribution Checklist
   
     - Make sure that the pull request corresponds to a [JIRA issue](https://issues.apache.org/jira/projects/FLINK/issues). Exceptions are made for typos in JavaDoc or documentation files, which need no JIRA issue.
     
     - Name the pull request in the form "[FLINK-XXXX] [component] Title of the pull request", where *FLINK-XXXX* should be replaced by the actual issue number. Skip *component* if you are unsure about which is the best component.
     Typo fixes that have no associated JIRA issue should be named following this pattern: `[hotfix] [docs] Fix typo in event time introduction` or `[hotfix] [javadocs] Expand JavaDoc for PuncuatedWatermarkGenerator`.
   
     - Fill out the template below to describe the changes contributed by the pull request. That will give reviewers the context they need to do the review.
     
     - Make sure that the change passes the automated tests, i.e., `mvn clean verify` passes. You can set up Travis CI to do that following [this guide](https://flink.apache.org/contributing/contribute-code.html#open-a-pull-request).
   
     - Each pull request should address only one issue, not mix up code from multiple issues.
     
     - Each commit in the pull request has a meaningful commit message (including the JIRA id)
   
     - Once all items of the checklist are addressed, remove the above text and this checklist, leaving only the filled out template below.
   
   
   **(The sections below can be removed for hotfixes of typos)**
   -->
   
   ## What is the purpose of the change
   
   Adds a dedicated plugin page, which will be expanded in the future for connectors and other types.
   Central page to point someone who asks: what are plugins?
   
   ## Brief change log
   
   - Adds plugin page
   - Adds several links to the plugin page
   
   ## Verifying this change
   
   Does not apply
   
   ## Does this pull request potentially affect one of the following parts:
   
     - Dependencies (does it add or upgrade a dependency): (yes / **no**)
     - The public API, i.e., is any changed class annotated with `@Public(Evolving)`: (yes / **no**)
     - The serializers: (yes / **no** / don't know)
     - The runtime per-record code paths (performance sensitive): (yes / **no** / don't know)
     - Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (yes / **no** / don't know)
     - The S3 file system connector: (yes / **no** / don't know)
   
   ## Documentation
   
     - Does this pull request introduce a new feature? (yes / **no**)
     - If yes, how is the feature documented? (not applicable / **docs** / JavaDocs / not documented)
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r370807180
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins have been introduced in Flink 1.9 and facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
++-- conf
++-- lib
++-- ...
+\-- plugins
+    +-- s3
+    |   +-- aws-credential-provider.jar
+    |   \-- flink-s3-fs-hadoop.jar
+    \-- azure
+        \-- flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through it's own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from lib/. Most importantly, all needed service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary, so that core Flink has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file systems, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   ```suggestion
   All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r370805779
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins have been introduced in Flink 1.9 and facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
 
 Review comment:
   The documentation is versioned so the reader can assume what they are looking at is relevant to that version. For that reason we generally avoid listing Flink versions and reserve those comments for the release notes. 
   
   ```suggestion
   Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r370806073
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins have been introduced in Flink 1.9 and facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
++-- conf
++-- lib
++-- ...
+\-- plugins
+    +-- s3
+    |   +-- aws-credential-provider.jar
+    |   \-- flink-s3-fs-hadoop.jar
+    \-- azure
+        \-- flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through it's own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
 
 Review comment:
   ```suggestion
   Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:UNKNOWN URL:TBD TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] pnowojski merged pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
pnowojski merged pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945
 
 
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371131305
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
 
 Review comment:
   I would split longer lines (like this) into multiple lines. Makes reading diffs, reviewing and resolving conflicts significantly easier.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146236270 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:PENDING URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   * 9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146236270) Azure: [PENDING](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot commented on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot commented on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578200461
 
 
   Thanks a lot for your contribution to the Apache Flink project. I'm the @flinkbot. I help the community
   to review your pull request. We will use this comment to track the progress of the review.
   
   
   ## Automated Checks
   Last check on commit 3f006c04d4c5e5237057a662096dd20742c026ec (Fri Jan 24 16:24:50 UTC 2020)
   
    ✅no warnings
   
   <sub>Mention the bot in a comment to re-run the automated checks.</sub>
   ## Review Progress
   
   * ❓ 1. The [description] looks good.
   * ❓ 2. There is [consensus] that the contribution should go into to Flink.
   * ❓ 3. Needs [attention] from.
   * ❓ 4. The change fits into the overall [architecture].
   * ❓ 5. Overall code [quality] is good.
   
   Please see the [Pull Request Review Guide](https://flink.apache.org/contributing/reviewing-prs.html) for a full explanation of the review process.<details>
    The Bot is tracking the review progress through labels. Labels are applied according to the order of the review items. For consensus, approval by a Flink committer of PMC member is required <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot approve description` to approve one or more aspects (aspects: `description`, `consensus`, `architecture` and `quality`)
    - `@flinkbot approve all` to approve all aspects
    - `@flinkbot approve-until architecture` to approve everything until `architecture`
    - `@flinkbot attention @username1 [@username2 ..]` to require somebody's attention
    - `@flinkbot disapprove architecture` to remove an approval you gave earlier
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:UNKNOWN URL:TBD TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371324965
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   If we do not support it, we should drop the mentions from the docs. If we are still supporting it, it would be nice to figure out yet one more time WHY we don't support it via plugins, and write it down. I swear this is the 3rd or 4th time already that I'm wondering why is it like that.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:PENDING URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [PENDING](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:PENDING URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:PENDING URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [PENDING](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [PENDING](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146236270 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   * 9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146236270) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371702615
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   I just wrote the reason before; we support MapR but it's already in flink-dist.jar, so you cannot use it in plugins.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371241181
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   Didn’t we drop MapR?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371290160
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   @pnowojski there is no jar. it's bundled in flink-dist for some reason.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
pnowojski commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371132522
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   Could we document what's the problem with `MapR`? (I have already forgotten)

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:UNKNOWN URL:TBD TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   * 9aaf22fc596b0c54c6aef28a6c1216a1e5474976 UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:PENDING URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [PENDING](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
AHeise commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r371289683
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
+├── conf
+├── lib
+...
+└── plugins
+    ├── s3
+    │   ├── aws-credential-provider.jar
+    │   └── flink-s3-fs-hadoop.jar
+    └── azure
+        └── flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through its own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
+
+<span class="label label-warning">Note</span> *Currently, more Flink core classes are still accessible from plugins as we flesh out the SPI system.*
+
+Furthermore, the most common logger frameworks are whitelisted, such that logging is uniformly possible across Flink core, plugins, and user code.
+
+## File Systems
+
+All [file systems](filesystems/index) **except MapR** are pluggable. That means they can and should be used as plugins. To use a pluggable file system, copy the corresponding JAR file from the `opt` directory to a directory under `plugins` directory
 
 Review comment:
   I think we just dropped MapR repositories but not the connector support itself. At least it's still on master https://github.com/apache/flink/blob/master/flink-filesystems/flink-mapr-fs/src/main/java/org/apache/flink/runtime/fs/maprfs/MapRFsFactory.java .

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot commented on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot commented on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:UNKNOWN URL:TBD TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
sjwiesman commented on a change in pull request #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#discussion_r370806866
 
 

 ##########
 File path: docs/ops/plugins.md
 ##########
 @@ -0,0 +1,91 @@
+---
+title: "Plugins"
+nav-id: plugins
+nav-parent_id: ops
+nav-pos: 16
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+Plugins have been introduced in Flink 1.9 and facilitate a strict separation of code through restricted classloaders. Plugins cannot access classes from other plugins or from Flink that have not been specifically whitelisted. This strict isolation allows plugins to contain conflicting versions of the same library without the need to relocate classes or to converge to common versions.
+
+Currently, only file systems are pluggable but in the future, connectors, formats, and even user code should also be pluggable.
+
+* This will be replaced by the TOC
+{:toc}
+
+## Isolation and plugin structure
+
+Plugins reside in their own folders and can consist of several jars. The names of the plugin folders are arbitrary.
+
+```
+flink-dist
++-- conf
++-- lib
++-- ...
+\-- plugins
+    +-- s3
+    |   +-- aws-credential-provider.jar
+    |   \-- flink-s3-fs-hadoop.jar
+    \-- azure
+        \-- flink-azure-fs-hadoop.jar
+``` 
+
+Each plugin is loaded through it's own classloader and completely isolated from any other plugin. Hence, the `flink-s3-fs-hadoop` and `flink-azure-fs-hadoop` can depend on different conflicting library versions. There is no need to relocate any class during the creation of fat jars (shading).
+
+Plugins may access certain whitelisted packages from lib/. Most importantly, all needed service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary, so that core Flink has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
 
 Review comment:
   ```suggestion
   Plugins may access certain whitelisted packages from Flink's `lib/` folder. In particular, all necessary service provider interfaces (SPI) are loaded through the system classloader, so that no two versions of `org.apache.flink.core.fs.FileSystem` exist at any given time, even if users accidentally bundle it in their fat jar. This singleton class requirement is strictly necessary so that the Flink runtime has an entry point into the plugin. Service classes are discovered through the `java.util.ServiceLoader`, so make sure to retain the service definitions in `META-INF/services` during shading.
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [flink] flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.

Posted by GitBox <gi...@apache.org>.
flinkbot edited a comment on issue #10945: [FLINK-15274][docs]Added separate plugin page.
URL: https://github.com/apache/flink/pull/10945#issuecomment-578211988
 
 
   <!--
   Meta data
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/145970543 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:3f006c04d4c5e5237057a662096dd20742c026ec Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613 TriggerType:PUSH TriggerID:3f006c04d4c5e5237057a662096dd20742c026ec
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:FAILURE URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:c4c0572dd96d5ca2ff3a484e56adc569e03783da Status:SUCCESS URL:https://travis-ci.com/flink-ci/flink/builds/146019150 TriggerType:PUSH TriggerID:c4c0572dd96d5ca2ff3a484e56adc569e03783da
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:FAILURE URL:https://travis-ci.com/flink-ci/flink/builds/146181865 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:e1f1cfbd069850680d5fb3e0e9300794af30987d Status:SUCCESS URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624 TriggerType:PUSH TriggerID:e1f1cfbd069850680d5fb3e0e9300794af30987d
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:PENDING URL:https://travis-ci.com/flink-ci/flink/builds/146236270 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   Hash:9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Status:PENDING URL:https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631 TriggerType:PUSH TriggerID:9aaf22fc596b0c54c6aef28a6c1216a1e5474976
   -->
   ## CI report:
   
   * 3f006c04d4c5e5237057a662096dd20742c026ec Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/145970543) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4613) 
   * c4c0572dd96d5ca2ff3a484e56adc569e03783da Travis: [SUCCESS](https://travis-ci.com/flink-ci/flink/builds/146019150) Azure: [FAILURE](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4616) 
   * e1f1cfbd069850680d5fb3e0e9300794af30987d Travis: [FAILURE](https://travis-ci.com/flink-ci/flink/builds/146181865) Azure: [SUCCESS](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4624) 
   * 9aaf22fc596b0c54c6aef28a6c1216a1e5474976 Travis: [PENDING](https://travis-ci.com/flink-ci/flink/builds/146236270) Azure: [PENDING](https://dev.azure.com/rmetzger/5bd3ef0a-4359-41af-abca-811b04098d2e/_build/results?buildId=4631) 
   
   <details>
   <summary>Bot commands</summary>
     The @flinkbot bot supports the following commands:
   
    - `@flinkbot run travis` re-run the last Travis build
    - `@flinkbot run azure` re-run the last Azure build
   </details>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services