Hi Till,

image link is

https://www.dropbox.com/s/ywwa73cdf7vcseo/5ce493e4-9578-486f-8ef7-b0413bd39e2c.png?dl=0

Thanks

*Best Regards.*

*Dilanka Rathnayake,*
*Department of Computer Engineering,*

*Faculty of Engineering,**University of Peradeniya,*
*Sri Lanka.*


* <https://lk.linkedin.com/in/dilankamr>
<https://www.facebook.com/Dilankamr>    *

On Thu, Mar 10, 2016 at 1:48 PM, Till Westmann <[email protected]> wrote:

> Hi Dilanka,
>
> answers inline:
>
> On 7 Mar 2016, at 8:20, Dilanka Rathnayake wrote:
>
> Thank you for your reply. As you told I created a HTTP interface using
>> tomcat and it starts cluster controller while executing the query.
>> then as you told it is the point that I went wrong.
>>
>> So then, If we should not to start the cluster by HTTP interface then we
>> have to use the cluster to start the HTTP interface. So do you mean we
>> have
>> to make a simple HTTP server to start it by cluster controller or start a
>> server like Jetty from cluster controller?
>>
>
> I think that we can start a server using an implementation of an
> ICCApplicationEntryPoint. That is started by the ClusterController.
> To get some inspiration you could look at the way this is done in
> AsterixDB (incubating) [1]. However, I would seriously encourage you to
> also look at netty [2].
>
> [1]
> https://github.com/apache/incubator-asterixdb/blob/master/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
> [2] http://netty.io/
>
> I attached a diagram of architecture I guessed. So please look at
>> this diagram.
>>
>> In present 'Vxquery CLI' the cluster controller starts by
>>> startLocalHyracks()
>>>
>>  method and it starts during query execution (please correct me if I am
>> wrong). But the problem is we have to use a HTTP interface to send HTTP
>> requests from the web interface to back end. So then we have to
>> start cluster  before sending HTTP requests to back end or we have to keep
>> running the cluster controller while running the web app. Is it correct?
>> If
>> it is correct how we can do it. (any suggestions?)
>>
>
> Starting a mini-cluster inside of the CLI is just a shortcut for testing.
> The intended deployment is a separate cluster of one CC (cluster
> controller)
> and a few NCs (node controllers) that the CLI will talk to.
> So the HTTP server should be started inside of the CC that itself can be
> started with the shell scripts in vxquery-server.
> Please see if the information on in vxquery-server and on the website makes
> sense to you and tell us what is missing.
>
> . [image: Inline image 1]
>>
>>
> Unfortunately, I can’t see this image. It might have been stripped out by
> the
> mailing list. Could you send a link?
>
> Also I went trough 'VXQUERY-180' [1] issue and its wiki page[2] . You are
>>>
>> discussing about a 'RESTful API' for 'CLI' there.That API
>> is implementing using ' SwaggerIO' and is it makes HTTP interface in
>> cluster controller as you told? I tried to run that and I got following
>> Response for all examples.
>>
>
> I think what we have so far is just a specification for the API and we’ve
> used Swagger’s tooling to describe the API, nothing is expected to work ..
>
> There are also a few hand-written examples on the wiki page that show
> requests
> (using curl’s syntax) and the expected results from the HTTP API.
>
>
> -d "statement=for $x in doc('books.xml')/bookstore/book/title return $x"
>>>
>> * Rebuilt URL to: http://localhost:/????/query
>> *   Trying 127.0.0.1...
>> * Connected to localhost (127.0.0.1) port 80 (#0)
>>
>>> POST /????/query HTTP/1.1
>>> Host: localhost
>>> User-Agent: curl/7.43.0
>>> Accept: */*
>>> Content-Length: 63
>>> Content-Type: application/x-www-form-urlencoded
>>>
>>> * upload completely sent off: 63 out of 63 bytes
>> < HTTP/1.1 200 OK
>> < Date: Mon, 07 Mar 2016 16:06:28 GMT
>> < Server: Apache/2.4.12 (Ubuntu)
>> < Last-Modified: Fri, 05 Feb 2016 05:47:57 GMT
>> < ETag: "208-52aff64a4d142"
>> < Accept-Ranges: bytes
>> < Content-Length: 520
>> < Vary: Accept-Encoding
>> < Content-Type: text/html
>> <
>> <html>
>>
>> <head>
>>     <script type="text/javascript" src="
>> https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js";></script>
>>     <script type="text/javascript" src="script.js"></script>
>> </head>
>>
>>
>>     <body>
>>         <form method="post" action="save.php">
>>             Name:
>>             <input id="name" name="name" type="text" />
>>             <br> Password:
>>             <input id="Pass" name="pass" type="password" />
>>             <br>
>>             <input type="submit" value="Done" />
>>         </form>
>>     </body>
>>
>> * Connection #0 to host localhost left intact
>> </html>
>>
>> what is that error going on?
>>
>
> I’m surprised that you got a response at all. It seems that some HTTP
> server is running on you machine.
>
> Also please be kind enough to suggest some works/jobs that I can do for get
>> more familiar to this cluster controllers and HTTP interface that should
>> implement.
>>
>
> I think that it would be helpful if you would
> a) try to start a mini VXQuery cluster outside of the CLI executable and
>    run a query against that (just to see if it works) and
> b) create a very simple implementation of an ICCApplicationEntryPoint
>    (e.g. one that prints something to stderr) and deploy that so that it
>    will run while starting the cluster controller.
>
> Does this make sense?
> If you try this, please tell us either how you did it or what information
> is missing to enable you to do it (so that we could add it to the website).
>
> Does this help?
>
> Cheers,
> Till
>
>
> On Mon, Mar 7, 2016 at 2:45 AM, Till Westmann <[email protected]> wrote:
>>
>> Hi Dilanka,
>>>
>>> I took a brief look (sorry if I missed something) at the change and I do
>>> have a question on the intended deployment model. It seems to me, that
>>> you’ve created an HTTP interface that requires an additional servlet
>>> container (Tomcat) that the HTTP interface is deployed into.
>>>
>>> Is that correct?
>>>
>>> If so, I think that this is not the deployment model that we envisioned
>>> (and I hope that someone will correct me if that’s just me and not
>>> everybody who though about this before).
>>>
>>> As VXQuery anyway runs at least one process/JVM (the cluster controller
>>> of
>>> the underlying Hyracks platform), the idea was to have this process also
>>> serve HTTP requests. And the CLI and the WebUI would then talk to this
>>> HTTP
>>> API. That way we would ensure that
>>> a) the HTTP API exposes all functionality of a VXQuery cluster and
>>> b) we don’t require too may process to start VXQuery.
>>>
>>> So, specifically to the issue that you are seeing: the cluster should
>>> start the HTTP interface and the container hosting the HTTP interface
>>> should not start a cluster at all.
>>>
>>> To run an HTTP service inside of the Hyracks cluster controller another
>>> project that’s based on Hyracks - Apache AsterixDB (incubating) [1] -
>>> uses
>>> Jetty [2]. However, another interesting option to do this that should be
>>> considered is Netty [3].
>>>
>>> To get some more information about the cluster architecture of VXQuery
>>> you
>>> could also take a look at 2 technical reports on VXQuery [4] and the
>>> underlying Hyracks platform [5].
>>>
>>> Does this help?
>>> Till
>>>
>>> [1] http://asterixdb.incubator.apache.org/
>>> [2] https://eclipse.org/jetty/
>>> [3] http://netty.io/
>>> [4] http://arxiv.org/abs/1504.00331
>>> [5] https://asterix.ics.uci.edu/pub/Hyracks.pdf
>>>
>>>
>>> On 2 Mar 2016, at 7:51, Dilanka Rathnayake wrote:
>>>
>>> I created a Restful API to get query result using vxquery CLI.
>>>
>>>>
>>>> I implemented a new java class called vxquery.java and the controller of
>>>> Rest service call the 'run()' method in vxquery.java. But, as soon as
>>>> the
>>>> 'run()' has been called an exception is thrown as follows.
>>>> 'org.apache.hyracks.api.exceptions.HyracksDataException:
>>>> org.apache.hyracks.api.exceptions.HyracksDataException:
>>>> org.apache.hyracks.api.exceptions.HyracksDataException:
>>>> org.apache.hyracks.algebricks.common.exceptions.AlgebricksException:
>>>> org.apache.vxquery.exceptions.SystemException: SYSE0001:'
>>>>
>>>> If I run same method in same way through the main method in
>>>> vxquery.java,
>>>> then it runs normally and gives the expected result.
>>>> When I was debugging,  I have found out that the exception is throwing
>>>> because of "request error" when calling the method
>>>> 'deliverIncomingMessage()' in RPCInterface.class.
>>>>
>>>> I think the above mentioned error is occurred because the CLI is
>>>> starting
>>>> a
>>>> cluster and run the query even if a cluster has not been defined.  At
>>>> that
>>>> time we cant send requests to localhost by tomcat.
>>>> Is this correct? Does anyone has an idea to solve this. Appreciate any
>>>> help
>>>> regarding this. I am trying to find a solution almost 2 days. Still no
>>>> success.
>>>>
>>>> You can check my code here..
>>>> https://github.com/dilankamr/vxquery
>>>> Please check "readme" for more info.
>>>>
>>>> *Best Regards.*
>>>>
>>>> *Dilanka Rathnayake,*
>>>> *Department of Computer Engineering,*
>>>>
>>>> *Faculty of Engineering,**University of Peradeniya,*
>>>> *Sri Lanka.*
>>>>
>>>>
>>>> * <https://lk.linkedin.com/in/dilankamr>
>>>> <https://www.facebook.com/Dilankamr>    *
>>>>
>>>>
>>>

Reply via email to