Thanks Tim,
I spent a while looking at that while going through the code, I think I know
a
way to get that particular part(the events listed in GExecutor) to compile,
however, I thought it was unnecessary so didnt even bother with it. I just
wanted to know if someone else saw something in there that I was missing.
Ive been talking to Jonathan about adding at least some basic intelligence to
the manager. Thats what got me started on this expedition. Im finally
learning
the class heirarchy good enough to see where it would make sense to insert some
of the monitoring code. Ive created and ran a few quick apps to try out the
framework, which works well for as far as the original creators went. Thats
why
Iam surpirsed to this the project has been at a standstill for so long.
I read on one of the old posts that someone else was having problems with the
examples Tim. They compiled fine (the c# version) however, I never tried
them.
As i mentioned above, I wrote my own test apps for the framework and ran it.
There may be other parts of the framework I havent tried that are actually
broken. I only tried breaking an app up and sending it to the manager and
sending threads to the manager on the fly based on the returned results from
completed threads (my app responding to the threadfinished events) , both of
which worked, but, showed a few limitations. Neither The manager or the
executor fails gracefully, or tries to recover from or prevent failures.
Thanks for looking at it for me,
Richard
________________________________
From: Tim Barrass <[email protected]>
To: Jonathan Mitchem <[email protected]>; Richard Foreman
<[email protected]>
Cc: [email protected]
Sent: Tue, March 29, 2011 10:22:26 AM
Subject: RE: [Alchemi-users] A few more questions
Hi chaps, sorry for butting in – was interested in passing!
Richard – it looks to me like the GExecutor was intended to be a purely local
workload handler, and for the Container to handle connections to the rest of
the
infrastructure. It does at least create the needed endpoints, and configure and
create the Executor.
That said, the Executor then goes off and talks to the manager on its own
account, so either the design is flawed, or my interpretation of what they’re
trying to do is.
In any case, I’d expect the Executor to talk to the Container purely about
workload, and for the Container to talk to the Manager on its behalf – and
therefore for the Container to fire Disconnected events rather than the
Executor.
(I’m assuming that ExecutorService, Container and GExecutor all form a single
worker process in this ..)
BTW – interesting framework; have spotted a couple of things I’d like to do
about resilience etc as well, I definitely agree on that point Jonathan.
Cheers, let me know if I’d wide of the mark,
Tim
From:Jonathan Mitchem [mailto:[email protected]]
Sent: 28 March 2011 21:28
To: Richard Foreman
Cc: [email protected]
Subject: Re: [Alchemi-users] A few more questions
I'm not sure why a lot of Alchemi was designed the way it was. There's plenty
of architectural decisions I questioned when I started, and continue to
question.
If you followed what Matt and I tried to do, we were trying to take the best
ideas from Alchemi, and then rebuild from scratch supporting them, taking what
we liked and leaving the rest.
see: http://tools.assembla.com/alchemireloaded/wiki/OriginalAlchemiBreakdown
also: http://tools.assembla.com/alchemireloaded/wiki/BrainstormingArea
Probably the biggest complaint is that the resiliency simply isn't there. The
second is related to dependency management, as you've seen. We were going to
try experimenting with resource-based scheduling, where each executor has
capabilities and each GApplication has requirements, and match executors based
upon those needs. In your case, certain Java dependencies.
I know the GridBus team at Melbourne was focused on that, but using one of the
open grid frameworks, not Alchemi. http://www.cloudbus.org/intro.html
(I guess it's now CloudBus, and I guess they're still claiming Alchemi, even
though I don't think anyone there's touched it for 5+ years.)
Oftentimes I still feel in the same boat of "they did it this way for a reason,
right?" Usually if I can't figure it out, I just do it my way, test it, and
occasionally realize that "ok, they had a point, if you don't do it that way it
doesn't work."
It's quite likely that at this point you have a better understanding of the
framework than I do. And at the risk of offending someone, I think it's far
more complicated than it needs to be.
Anyway, glad to hear you've found a way to play with it without getting too
overwhelmed with newness.
Jonathan
On Mon, Mar 28, 2011 at 4:01 PM, Richard Foreman <[email protected]> wrote:
Hello again Jonathan,
I understand your busy so dont worry to much about it. I just figured Id
throw it out there to see if you remembered enough about the inner workings
that
you might be able to whip out an answer (or tell me Im freaking stupid for not
seeing the abvious lol). Not to mention oe of the other people on the list has
been talking to me a little about it.
As far as why I chose C++ as my second language, it was because of a
particular project that Ive been working on in VB for a few years, my own
bignumber class, and I figured c++ would be the best choice for it in order to
get the speed I wanted out of it, well turned out to be quite a lot harder
learning then I thought it would be, Ive literally spent hundreds of hours
reading and wading through other folks code to figure out how to do things, now
that I finally have a good enough grasp of it so that I can sit down and
actually tackle most anything I want with it, and I am afraid Id loose it if I
tackled another language full bore. Until I started this, I had allways
thought
tht C# was pretty close to C++, now I see that they are completely different.
I
have managed to get about 2/3 of the main classes in C++ in the last 3 days
(thats about 100 classes it turns out) without hardly changing any of the
functionality. I had t make a couple of subtle changes in order to get it to
work.
The good news is, I am finally getting a grasp on th layout of the framework
so that I might actually be able to implement the changes I want to make. Like
I said, given enough time, I can figure anything out.
SIP? you working on that for voip or something?
________________________________
From:Jonathan Mitchem <[email protected]>
To: Richard Foreman <[email protected]>
Cc: [email protected]
Sent: Mon, March 28, 2011 12:36:43 PM
Subject: Re: [Alchemi-users] A few more questions
Gimme a day or three to respond. I got this and started reading, but it
deserves more than just a cursory read.
Of course, my first question was "why C++". I assumed it was because you'd
been
using C++ for a long time, but it seems that's not really the case. I strongly
suggest you become competent in C#. C++ is good to know too, but if you're
going to be in a managed environment, stick with C#.
Beyond that, I need to actually read/digest the real content of the email. I'm
in the middle of work stuff and writing a SIP client at home, so I don't have
the time to give it justice yet.
On Sun, Mar 27, 2011 at 12:11 PM, Richard Foreman <[email protected]> wrote:
I told you I was going to bug you again. Ive started porting the whole
framework over to managed C++, I was having too many problems with it in C#.
I
actually got the Core ported over easily, and have started on the Executor
classes when I ran into a snag which I havent figured out how to get around
yet. Evereything in the Core and the first set of Executor classes (I allready
ported over the Executor classes, and am currently working on the ExecutorExec
classes, leaving just the Executor service class to do) Allright, so everyting
in the executorexec classes ported over just fine with the exception of a few
of
the events.
Specifically, there are a few events defined in GExecutor(
public
eventGotDisconnectedEventHandler GotDisconnected; and
public
eventNonDedicatedExecutingStatusChangedEventHandler
NonDedicatedExecutingStatusChanged;) both of which are fired from within
GExecutor through delegates. The ExecutorContainer class subscribes to these
events through the delegates, however, ExecutorContainer also defines these
events within itself through the same delegates as GExecutor. The handler for
the GotDisconnected event is defined within ExecutorContainer to handle th
event
fired from within GExecutor, but, all the handler does (I beleive) is refire
the
event which is declared within itself. Whoever wrote the class wrote a comment
about "bubble the event to whoever handles this.". The problem I am having is
that the compiler will not let me subscribe to these events no matter how I try
to set them up(these are the only two events I am having trouble with the rest
of that set of classes crossed over just fine). So, heres where I have a
question or two. Why would they set up the container class to refire an event
fired from within a class that is instantiated within the container class? The
instances of GExecutor are in an array marked public in the container class, so
if someone wanted to subscribe to the events they could easily do it directly
(I
would think), and as I said, the event handler in the container class does not
do anything with the event. Or am I completely missing something here?
If it is something basic, dont get too mad. I am a self taught programmer
and
have only been working in C++ for about 6 months now. I work full time and am
a
single dad that just does this for fun, but given the chance, I can prove I am
not completely stupid (most of the time lol).
Now the other question I have is about the dependency manifests. One of the
applications I put out on my network relies heavily on an implementation of a
BigNumber class I wrote myself. Now my implementation uses the java BigInteger
class just as a container for the number and uses the java implementation for
just basic math(add, subtract, and multiply) all the other functions I had to
implement myself because java gets lost when the numbers get over about 100
digits for some reason. Anyways, I started out just doing the basic dependency
on my thread (derived from GThread), but the BigNumber class did not carry out
to the executors even though it was referenced in the class, so then I actually
copied the code for bignumber straight into the same file as the thread class,
but it still didnt get pushed out to the executors (that statement may be
incorrect though), so then I actually added Bignumber as an
additional dependency and finally got an error saying that java did not cross
over with the bignumber class, then I tried adding vjslib (java) as another
dependency but the executors just continually failed thread after thread until
I
actually installed the java redistributable on ALL of my computers. I believe
it was still failing because java had a dependency of its own that I am not
aware of. I believe I was coding the threads correctly, I havent had any
problems with any of the other applications Ive wrote on this framework. I
figured Id ask you since you are the only one that knows anything about this
framework (not to mention you are the only one answering haha).
I know it is kind of hard to picture without seeing the code, and Id be
willing to send it to you if youd like. Ill also send the C++ version to you
once Ive finished it and debugged it. It was going smoothly till last night,
so
if this is the only hiccup in it, I should have the core,executor, and manager
classes done by the end of this week, though the changes I am working on making
to it will not be that quick. Ive also started documenting the class heirarchy
so if anyone else comes along and wants to plug away at it that may help some.
The documentation within the framework is actually superb, but, for those of us
with limited ability, wading through all of it to figure out how to do
something
is a chore in itself.
Anyhow, this email went on longer then I thought, Im just trying to explain
things as thorough as possible. The more I get into this framework, the more I
cant believe that it is as dead as it is. I do appreciate any help you can
give.
Richard
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
alchemi-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alchemi-users
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
alchemi-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alchemi-users