You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@river.apache.org by Peter <ji...@zeus.net.au> on 2016/11/15 03:08:13 UTC
Maven Build
Some other news that might encourage participation, I've been working on
Dennis Reedy's script to modularise the codebase, I haven't run the test
suites against it and it isn't generating stubs yet, and I'll need to
modify the platform modules for the IoT effort after the conversion is
complete.
Here's the output of the River maven build:
Reactor Summary:
River-Internet Project ............................ SUCCESS [0.689s]
Module :: River Policy ............................ SUCCESS [8.395s]
Module :: River Resources ......................... SUCCESS [0.607s]
Module :: River Platform .......................... SUCCESS [23.521s]
Module :: River Service DL Library ................ SUCCESS [8.999s]
Module :: River Service Library ................... SUCCESS [8.014s]
Module :: River Service Starter ................... SUCCESS [3.930s]
Module :: River SharedGroup Destroy ............... SUCCESS [3.018s]
Module :: Outrigger ............................... SUCCESS [0.056s]
Module :: Outrigger Service Download classes ...... SUCCESS [2.416s]
Module :: Outrigger Service Implementation ........ SUCCESS [4.118s]
Module :: Outrigger Snaplogstore .................. SUCCESS [3.273s]
Module :: Lookup Service .......................... SUCCESS [0.048s]
Module :: Reggie Service Download classes ......... SUCCESS [3.966s]
Module :: Reggie Service Implementation ........... SUCCESS [3.621s]
Module :: Mahalo .................................. SUCCESS [0.436s]
Module :: Mahalo Service Download classes ......... SUCCESS [2.059s]
Module :: Mahalo Service Implementation ........... SUCCESS [4.175s]
Module :: Mercury the Event Mailbox ............... SUCCESS [0.497s]
Module :: Mercury Service Download classes ........ SUCCESS [3.622s]
Module :: Mercury Service Implementation .......... SUCCESS [3.562s]
Module :: Norm .................................... SUCCESS [0.013s]
Module :: Norm Service Download classes ........... SUCCESS [2.867s]
Module :: Norm Service Implementation ............. SUCCESS [6.390s]
Module :: Group ................................... SUCCESS [0.025s]
Module :: Mahalo Service Download classes ......... SUCCESS [2.877s]
Module :: Group Service Implementation ............ SUCCESS [2.037s]
Module :: Tools ................................... SUCCESS [0.485s]
Module :: Check ConfigurationFile ................. SUCCESS [2.720s]
Module :: Check serialversionUid .................. SUCCESS [2.129s]
Module :: ClassDep ................................ SUCCESS [4.157s]
Module :: Class Server ............................ SUCCESS [3.353s]
Module :: Compute message digest .................. SUCCESS [1.734s]
Module :: Compute httpmd codebase ................. SUCCESS [2.102s]
Module :: Environment Check ....................... SUCCESS [2.837s]
Module :: Jar wrapper ............................. SUCCESS [2.179s]
Module :: Preferred classes list generator ........ SUCCESS [2.495s]
Module :: Phoenix Activation ...................... SUCCESS [0.029s]
Module :: Phoenix Download ........................ SUCCESS [2.685s]
Module :: Phoenix ................................. SUCCESS [4.095s]
Module :: Phoenix Group ........................... SUCCESS [2.445s]
Module :: Phoenix Init ............................ SUCCESS [1.740s]
River Distribution ................................ SUCCESS [10.523s]
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 2:29.804s
Finished at: Mon Nov 14 22:22:31 EST 2016
Final Memory: 145M/247M
------------------------------------------------------------------------
Re: Maven Build
Posted by "Michał Kłeczek (XPro Sp. z o. o.)" <mi...@xpro.biz>.
While I also thought about out-of-process based mechanism for execution
of dynamically downloaded code, I came to the conclusion that in the
context of River/Java in-process mechanism is something that MUST be
done right. All other things can (and should) be built on that.
I think that the proposal to implement "remote calls on smart proxy
interfaces that aren't remote" is somewhat a misnomer. The call is
either remote or local - you cannot have both at the same time. AFAIK
Jini community always believed there is no possibility to have
local/remote transparency. That is why there exists java.rmi.Remote
marker interface in the first place.
There is also the question about the level of isolation you want to
achieve. Simple "out-of-process" is not enough, chroot is not enough,
CGROUPS/containers/jails/zones might be not enough, virtual machines
might be not enough :) - going the route you propose opens up the whole
world of new questions to answer. At the same time you loose the most
important advantages of in-process execution:
- simplicity of communication between components (basic function call,
no need to do anything complicated to implement callbacks etc.)
- performance
In the end you either standardize on the well known set of communication
protocols (such as JERI) OR you say "end of protocols" by allowing
execution of dynamically downloaded code in-process.
If River is going to choose the first route - IMHO it is going to fail
since it does not propose anything competitive comparing to current
mainstream HTTP(S)/REST/JSON stack.
Thanks,
Michal
> Peter <ma...@zeus.net.au>
> November 15, 2016 at 8:28 AM
> I've been thinking about process isolation (instead of using
> ClassLoader's for isolation). Typically, smart proxy's are isolated
> in their own ClassLoader, with their own copies of classes, however
> with Maven, a lot more class sharing occurs. Since River uses
> codebase annotations for identity, using maven codebase annotations
> will result in proxy's from different services sharing identity.
>
> A better way to provide for different identities coexisting on the
> same node, would be to use subprocess jvm's for each Service's server
> principal identity, to keep classes from different services in
> different processes.
>
> This way, each principal would have their own process & Maven
> namespace for their proxy's.
>
> Presently JERI only exports interfaces in reflection proxy's that
> implement Remote, so I'd need an endpoint that can export all
> interfaces, accross a local interprocess connection to allow remote
> calls on smart proxy interfaces that aren't remote.
>
> This also means that memory resource consumption of smart proxy's can
> be controlled by the client and a smart proxy's process killed without
> killing the client jvm.
>
> Cheers,
>
> Peter.
>
>
>
> Dawid Loubser <ma...@travellinck.com>
> November 15, 2016 at 8:50 AM
> As a very heavy Maven user, I wanted to say that this is great news.
> This is encouraging indeed!
>
> Dawid
>
>
> Peter <ma...@zeus.net.au>
> November 15, 2016 at 4:08 AM
> Some other news that might encourage participation, I've been working
> on Dennis Reedy's script to modularise the codebase, I haven't run the
> test suites against it and it isn't generating stubs yet, and I'll
> need to modify the platform modules for the IoT effort after the
> conversion is complete.
>
> Here's the output of the River maven build:
>
> Reactor Summary:
>
> River-Internet Project ............................ SUCCESS [0.689s]
> Module :: River Policy ............................ SUCCESS [8.395s]
> Module :: River Resources ......................... SUCCESS [0.607s]
> Module :: River Platform .......................... SUCCESS [23.521s]
> Module :: River Service DL Library ................ SUCCESS [8.999s]
> Module :: River Service Library ................... SUCCESS [8.014s]
> Module :: River Service Starter ................... SUCCESS [3.930s]
> Module :: River SharedGroup Destroy ............... SUCCESS [3.018s]
> Module :: Outrigger ............................... SUCCESS [0.056s]
> Module :: Outrigger Service Download classes ...... SUCCESS [2.416s]
> Module :: Outrigger Service Implementation ........ SUCCESS [4.118s]
> Module :: Outrigger Snaplogstore .................. SUCCESS [3.273s]
> Module :: Lookup Service .......................... SUCCESS [0.048s]
> Module :: Reggie Service Download classes ......... SUCCESS [3.966s]
> Module :: Reggie Service Implementation ........... SUCCESS [3.621s]
> Module :: Mahalo .................................. SUCCESS [0.436s]
> Module :: Mahalo Service Download classes ......... SUCCESS [2.059s]
> Module :: Mahalo Service Implementation ........... SUCCESS [4.175s]
> Module :: Mercury the Event Mailbox ............... SUCCESS [0.497s]
> Module :: Mercury Service Download classes ........ SUCCESS [3.622s]
> Module :: Mercury Service Implementation .......... SUCCESS [3.562s]
> Module :: Norm .................................... SUCCESS [0.013s]
> Module :: Norm Service Download classes ........... SUCCESS [2.867s]
> Module :: Norm Service Implementation ............. SUCCESS [6.390s]
> Module :: Group ................................... SUCCESS [0.025s]
> Module :: Mahalo Service Download classes ......... SUCCESS [2.877s]
> Module :: Group Service Implementation ............ SUCCESS [2.037s]
> Module :: Tools ................................... SUCCESS [0.485s]
> Module :: Check ConfigurationFile ................. SUCCESS [2.720s]
> Module :: Check serialversionUid .................. SUCCESS [2.129s]
> Module :: ClassDep ................................ SUCCESS [4.157s]
> Module :: Class Server ............................ SUCCESS [3.353s]
> Module :: Compute message digest .................. SUCCESS [1.734s]
> Module :: Compute httpmd codebase ................. SUCCESS [2.102s]
> Module :: Environment Check ....................... SUCCESS [2.837s]
> Module :: Jar wrapper ............................. SUCCESS [2.179s]
> Module :: Preferred classes list generator ........ SUCCESS [2.495s]
> Module :: Phoenix Activation ...................... SUCCESS [0.029s]
> Module :: Phoenix Download ........................ SUCCESS [2.685s]
> Module :: Phoenix ................................. SUCCESS [4.095s]
> Module :: Phoenix Group ........................... SUCCESS [2.445s]
> Module :: Phoenix Init ............................ SUCCESS [1.740s]
> River Distribution ................................ SUCCESS [10.523s]
> ------------------------------------------------------------------------
> BUILD SUCCESS
> ------------------------------------------------------------------------
> Total time: 2:29.804s
> Finished at: Mon Nov 14 22:22:31 EST 2016
> Final Memory: 145M/247M
> ------------------------------------------------------------------------
Re: Maven Build
Posted by Peter <ji...@zeus.net.au>.
I've been thinking about process isolation (instead of using
ClassLoader's for isolation). Typically, smart proxy's are isolated in
their own ClassLoader, with their own copies of classes, however with
Maven, a lot more class sharing occurs. Since River uses codebase
annotations for identity, using maven codebase annotations will result
in proxy's from different services sharing identity.
A better way to provide for different identities coexisting on the same
node, would be to use subprocess jvm's for each Service's server
principal identity, to keep classes from different services in different
processes.
This way, each principal would have their own process & Maven namespace
for their proxy's.
Presently JERI only exports interfaces in reflection proxy's that
implement Remote, so I'd need an endpoint that can export all
interfaces, accross a local interprocess connection to allow remote
calls on smart proxy interfaces that aren't remote.
This also means that memory resource consumption of smart proxy's can be
controlled by the client and a smart proxy's process killed without
killing the client jvm.
Cheers,
Peter.
On 15/11/2016 5:50 PM, Dawid Loubser wrote:
> As a very heavy Maven user, I wanted to say that this is great news.
> This is encouraging indeed!
>
> Dawid
>
>
> On 15/11/2016 05:08, Peter wrote:
>> Some other news that might encourage participation, I've been working
>> on Dennis Reedy's script to modularise the codebase, I haven't run the
>> test suites against it and it isn't generating stubs yet, and I'll
>> need to modify the platform modules for the IoT effort after the
>> conversion is complete.
>>
>> Here's the output of the River maven build:
>>
>> Reactor Summary:
>>
>> River-Internet Project ............................ SUCCESS [0.689s]
>> Module :: River Policy ............................ SUCCESS [8.395s]
>> Module :: River Resources ......................... SUCCESS [0.607s]
>> Module :: River Platform .......................... SUCCESS [23.521s]
>> Module :: River Service DL Library ................ SUCCESS [8.999s]
>> Module :: River Service Library ................... SUCCESS [8.014s]
>> Module :: River Service Starter ................... SUCCESS [3.930s]
>> Module :: River SharedGroup Destroy ............... SUCCESS [3.018s]
>> Module :: Outrigger ............................... SUCCESS [0.056s]
>> Module :: Outrigger Service Download classes ...... SUCCESS [2.416s]
>> Module :: Outrigger Service Implementation ........ SUCCESS [4.118s]
>> Module :: Outrigger Snaplogstore .................. SUCCESS [3.273s]
>> Module :: Lookup Service .......................... SUCCESS [0.048s]
>> Module :: Reggie Service Download classes ......... SUCCESS [3.966s]
>> Module :: Reggie Service Implementation ........... SUCCESS [3.621s]
>> Module :: Mahalo .................................. SUCCESS [0.436s]
>> Module :: Mahalo Service Download classes ......... SUCCESS [2.059s]
>> Module :: Mahalo Service Implementation ........... SUCCESS [4.175s]
>> Module :: Mercury the Event Mailbox ............... SUCCESS [0.497s]
>> Module :: Mercury Service Download classes ........ SUCCESS [3.622s]
>> Module :: Mercury Service Implementation .......... SUCCESS [3.562s]
>> Module :: Norm .................................... SUCCESS [0.013s]
>> Module :: Norm Service Download classes ........... SUCCESS [2.867s]
>> Module :: Norm Service Implementation ............. SUCCESS [6.390s]
>> Module :: Group ................................... SUCCESS [0.025s]
>> Module :: Mahalo Service Download classes ......... SUCCESS [2.877s]
>> Module :: Group Service Implementation ............ SUCCESS [2.037s]
>> Module :: Tools ................................... SUCCESS [0.485s]
>> Module :: Check ConfigurationFile ................. SUCCESS [2.720s]
>> Module :: Check serialversionUid .................. SUCCESS [2.129s]
>> Module :: ClassDep ................................ SUCCESS [4.157s]
>> Module :: Class Server ............................ SUCCESS [3.353s]
>> Module :: Compute message digest .................. SUCCESS [1.734s]
>> Module :: Compute httpmd codebase ................. SUCCESS [2.102s]
>> Module :: Environment Check ....................... SUCCESS [2.837s]
>> Module :: Jar wrapper ............................. SUCCESS [2.179s]
>> Module :: Preferred classes list generator ........ SUCCESS [2.495s]
>> Module :: Phoenix Activation ...................... SUCCESS [0.029s]
>> Module :: Phoenix Download ........................ SUCCESS [2.685s]
>> Module :: Phoenix ................................. SUCCESS [4.095s]
>> Module :: Phoenix Group ........................... SUCCESS [2.445s]
>> Module :: Phoenix Init ............................ SUCCESS [1.740s]
>> River Distribution ................................ SUCCESS [10.523s]
>> ------------------------------------------------------------------------
>> BUILD SUCCESS
>> ------------------------------------------------------------------------
>> Total time: 2:29.804s
>> Finished at: Mon Nov 14 22:22:31 EST 2016
>> Final Memory: 145M/247M
>> ------------------------------------------------------------------------
>
Re: Maven Build
Posted by Dawid Loubser <da...@travellinck.com>.
As a very heavy Maven user, I wanted to say that this is great news.
This is encouraging indeed!
Dawid
On 15/11/2016 05:08, Peter wrote:
> Some other news that might encourage participation, I've been working
> on Dennis Reedy's script to modularise the codebase, I haven't run the
> test suites against it and it isn't generating stubs yet, and I'll
> need to modify the platform modules for the IoT effort after the
> conversion is complete.
>
> Here's the output of the River maven build:
>
> Reactor Summary:
>
> River-Internet Project ............................ SUCCESS [0.689s]
> Module :: River Policy ............................ SUCCESS [8.395s]
> Module :: River Resources ......................... SUCCESS [0.607s]
> Module :: River Platform .......................... SUCCESS [23.521s]
> Module :: River Service DL Library ................ SUCCESS [8.999s]
> Module :: River Service Library ................... SUCCESS [8.014s]
> Module :: River Service Starter ................... SUCCESS [3.930s]
> Module :: River SharedGroup Destroy ............... SUCCESS [3.018s]
> Module :: Outrigger ............................... SUCCESS [0.056s]
> Module :: Outrigger Service Download classes ...... SUCCESS [2.416s]
> Module :: Outrigger Service Implementation ........ SUCCESS [4.118s]
> Module :: Outrigger Snaplogstore .................. SUCCESS [3.273s]
> Module :: Lookup Service .......................... SUCCESS [0.048s]
> Module :: Reggie Service Download classes ......... SUCCESS [3.966s]
> Module :: Reggie Service Implementation ........... SUCCESS [3.621s]
> Module :: Mahalo .................................. SUCCESS [0.436s]
> Module :: Mahalo Service Download classes ......... SUCCESS [2.059s]
> Module :: Mahalo Service Implementation ........... SUCCESS [4.175s]
> Module :: Mercury the Event Mailbox ............... SUCCESS [0.497s]
> Module :: Mercury Service Download classes ........ SUCCESS [3.622s]
> Module :: Mercury Service Implementation .......... SUCCESS [3.562s]
> Module :: Norm .................................... SUCCESS [0.013s]
> Module :: Norm Service Download classes ........... SUCCESS [2.867s]
> Module :: Norm Service Implementation ............. SUCCESS [6.390s]
> Module :: Group ................................... SUCCESS [0.025s]
> Module :: Mahalo Service Download classes ......... SUCCESS [2.877s]
> Module :: Group Service Implementation ............ SUCCESS [2.037s]
> Module :: Tools ................................... SUCCESS [0.485s]
> Module :: Check ConfigurationFile ................. SUCCESS [2.720s]
> Module :: Check serialversionUid .................. SUCCESS [2.129s]
> Module :: ClassDep ................................ SUCCESS [4.157s]
> Module :: Class Server ............................ SUCCESS [3.353s]
> Module :: Compute message digest .................. SUCCESS [1.734s]
> Module :: Compute httpmd codebase ................. SUCCESS [2.102s]
> Module :: Environment Check ....................... SUCCESS [2.837s]
> Module :: Jar wrapper ............................. SUCCESS [2.179s]
> Module :: Preferred classes list generator ........ SUCCESS [2.495s]
> Module :: Phoenix Activation ...................... SUCCESS [0.029s]
> Module :: Phoenix Download ........................ SUCCESS [2.685s]
> Module :: Phoenix ................................. SUCCESS [4.095s]
> Module :: Phoenix Group ........................... SUCCESS [2.445s]
> Module :: Phoenix Init ............................ SUCCESS [1.740s]
> River Distribution ................................ SUCCESS [10.523s]
> ------------------------------------------------------------------------
> BUILD SUCCESS
> ------------------------------------------------------------------------
> Total time: 2:29.804s
> Finished at: Mon Nov 14 22:22:31 EST 2016
> Final Memory: 145M/247M
> ------------------------------------------------------------------------