You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-user@hadoop.apache.org by Jim Kellerman <ji...@powerset.com> on 2008/01/01 00:29:46 UTC

RE: REST scanner get error 500 0x1b is not valid

> -----Original Message-----
> From: Bryan Duxbury [mailto:bryan@rapleaf.com]
> Sent: Monday, December 31, 2007 2:46 PM
> To: hadoop-user@lucene.apache.org
> Subject: Re: REST scanner get error 500 0x1b is not valid
>
> You're probably right - column names are not base64 encoded.
> Isn't the contract of row/column keys printable strings?

No. row keys do not need to be printable strings. In the future,
they may be changed to an arbitrary WritableComparable, even
less restrictive than Text.

Column family names are restricted to the set: \w+:

There is no restriction on the names of a column family member
(the part of the column key after the initial ':')

Table names are restricted to the set of characters: [\w-.]+
except that table names starting with either '-' or '.' are
reserved for HBase internal use.

> If
> so, then putting images in that field would appear to be a
> mismatch. Even if you need to use images as qualifiers,
> wouldn't it be more efficient to use an md5 of the image
> rather than the actual image?
>
> -Bryan
>
> On Dec 30, 2007, at 3:56 PM, Billy wrote:
>
> > On one of my tables I get this when trying to get results from a
> > scanner
> >
> > I call for the scanner location and get it fine but on the
> first call
> > I get the below error
> >
> > Error 500 The character 0x1b is not valid.
> >
> > Not sure if this has to do with with the first row in my table but
> > that should not cause the scanner to return 500 error
> >
> > I can open scanner on other tables this one is the only one
> doing this
> > error.
> >
> > I tryed to delete the first row but no luck it will not
> delete useing
> > shell or rest. I have tryed several ways includeing
> urlencodeing the
> > row key and the col name but no luck
> >
> > First row in the table that would be called from the
> scanner and below
> > curl results with 500 error.
> >
> >
> >
> > hql > select * from anchors limit = 1;
> > +-------------------------+-------------------------
> > +-------------------------+
> > | Row                     | Column                  | Cell
> > |
> > +-------------------------+-------------------------
> > +-------------------------+
> > | !vj!;c!"$/$i$7!"650i!| url:net.jcp-tokyo.www/ma|
> > 1                       |
> > | "4d6-$n=                | in/seisaku/index.htm:htt|
> > |
> > |                         | p                       |
> > |
> > +-------------------------+-------------------------
> > +-------------------------+
> > 1 row(s) in set. (0.61 sec)
> >
> >
> > [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
> > /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner?
> > column=url:
> > * About to connect() to 192.168.1.200 port 60010
> > *   Trying 192.168.1.200... * connected
> > * Connected to 192.168.1.200 (192.168.1.200) port 60010
> >> PUT /api/anchors/scanner?column=url: HTTP/1.1
> > User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
> > OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
> > Host: 192.168.1.200:60010
> > Pragma: no-cache
> > Accept: text/xml
> > Content-Length: 1
> > Expect: 100-continue
> >
> > < HTTP/1.1 100 Continue
> > < HTTP/1.1 201 Created
> > < Date: Sun, 30 Dec 2007 23:23:46 GMT
> > < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
> java/1.5.0_12 <
> > Location: /api/anchors/scanner/a99db67 < Content-Length: 0
> > * Connection #0 to host 192.168.1.200 left intact
> > * Closing connection #0
> > [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
> > /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner/a99db67
> > * About to connect() to 192.168.1.200 port 60010
> > *   Trying 192.168.1.200... * connected
> > * Connected to 192.168.1.200 (192.168.1.200) port 60010
> >> PUT /api/anchors/scanner/a99db67 HTTP/1.1
> > User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
> > OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
> > Host: 192.168.1.200:60010
> > Pragma: no-cache
> > Accept: text/xml
> > Content-Length: 1
> > Expect: 100-continue
> >
> > < HTTP/1.1 100 Continue
> > < HTTP/1.1 500 The+character+0x1b+is+not+valid%2E
> > < Date: Sun, 30 Dec 2007 23:24:02 GMT
> > < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
> java/1.5.0_12 <
> > Content-Type: text/html;charset=UTF-8 < Content-Length: 1286 <
> > Connection: close <html> <head> <title>Error 500 The
> character 0x1b is
> > not valid.</title> </head> <body> <h2>HTTP ERROR: 500</h2><pre>The
> > character 0x1b is not valid.</pre>
> > <p>RequestURI=/api/anchors/scanner/a99db67</p>
> > <p><i><small><a href="http://jetty.mortbay.org">Powered by
> > Jetty://</a></small></i></p> </body> </html>
> > * Closing connection #0
> >
> >
> >
> >
>
>

Re: REST scanner get error 500 0x1b is not valid

Posted by Bryan Duxbury <br...@rapleaf.com>.
See 2507 for a patch. Let me know if this solves your problem, Billy.

-Bryan

On Dec 31, 2007, at 3:55 PM, Bryan Duxbury wrote:

> If keys and column names can be any arbitrary byte string, then  
> definitely the REST servlet is not taking care of that right now.  
> The answer is just base64 encoding all that stuff on gets as well.  
> I'll create a new ticket.
>
> -Bryan
>
> On Dec 31, 2007, at 3:29 PM, Jim Kellerman wrote:
>
>>> -----Original Message-----
>>> From: Bryan Duxbury [mailto:bryan@rapleaf.com]
>>> Sent: Monday, December 31, 2007 2:46 PM
>>> To: hadoop-user@lucene.apache.org
>>> Subject: Re: REST scanner get error 500 0x1b is not valid
>>>
>>> You're probably right - column names are not base64 encoded.
>>> Isn't the contract of row/column keys printable strings?
>>
>> No. row keys do not need to be printable strings. In the future,
>> they may be changed to an arbitrary WritableComparable, even
>> less restrictive than Text.
>>
>> Column family names are restricted to the set: \w+:
>>
>> There is no restriction on the names of a column family member
>> (the part of the column key after the initial ':')
>>
>> Table names are restricted to the set of characters: [\w-.]+
>> except that table names starting with either '-' or '.' are
>> reserved for HBase internal use.
>>
>>> If
>>> so, then putting images in that field would appear to be a
>>> mismatch. Even if you need to use images as qualifiers,
>>> wouldn't it be more efficient to use an md5 of the image
>>> rather than the actual image?
>>>
>>> -Bryan
>>>
>>> On Dec 30, 2007, at 3:56 PM, Billy wrote:
>>>
>>>> On one of my tables I get this when trying to get results from a
>>>> scanner
>>>>
>>>> I call for the scanner location and get it fine but on the
>>> first call
>>>> I get the below error
>>>>
>>>> Error 500 The character 0x1b is not valid.
>>>>
>>>> Not sure if this has to do with with the first row in my table but
>>>> that should not cause the scanner to return 500 error
>>>>
>>>> I can open scanner on other tables this one is the only one
>>> doing this
>>>> error.
>>>>
>>>> I tryed to delete the first row but no luck it will not
>>> delete useing
>>>> shell or rest. I have tryed several ways includeing
>>> urlencodeing the
>>>> row key and the col name but no luck
>>>>
>>>> First row in the table that would be called from the
>>> scanner and below
>>>> curl results with 500 error.
>>>>
>>>>
>>>>
>>>> hql > select * from anchors limit = 1;
>>>> +-------------------------+-------------------------
>>>> +-------------------------+
>>>> | Row                     | Column                  | Cell
>>>> |
>>>> +-------------------------+-------------------------
>>>> +-------------------------+
>>>> | !vj!;c!"$/$i$7!"650i!| url:net.jcp-tokyo.www/ma|
>>>> 1                       |
>>>> | "4d6-$n=                | in/seisaku/index.htm:htt|
>>>> |
>>>> |                         | p                       |
>>>> |
>>>> +-------------------------+-------------------------
>>>> +-------------------------+
>>>> 1 row(s) in set. (0.61 sec)
>>>>
>>>>
>>>> [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
>>>> /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner?
>>>> column=url:
>>>> * About to connect() to 192.168.1.200 port 60010
>>>> *   Trying 192.168.1.200... * connected
>>>> * Connected to 192.168.1.200 (192.168.1.200) port 60010
>>>>> PUT /api/anchors/scanner?column=url: HTTP/1.1
>>>> User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
>>>> OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
>>>> Host: 192.168.1.200:60010
>>>> Pragma: no-cache
>>>> Accept: text/xml
>>>> Content-Length: 1
>>>> Expect: 100-continue
>>>>
>>>> < HTTP/1.1 100 Continue
>>>> < HTTP/1.1 201 Created
>>>> < Date: Sun, 30 Dec 2007 23:23:46 GMT
>>>> < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
>>> java/1.5.0_12 <
>>>> Location: /api/anchors/scanner/a99db67 < Content-Length: 0
>>>> * Connection #0 to host 192.168.1.200 left intact
>>>> * Closing connection #0
>>>> [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
>>>> /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner/ 
>>>> a99db67
>>>> * About to connect() to 192.168.1.200 port 60010
>>>> *   Trying 192.168.1.200... * connected
>>>> * Connected to 192.168.1.200 (192.168.1.200) port 60010
>>>>> PUT /api/anchors/scanner/a99db67 HTTP/1.1
>>>> User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
>>>> OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
>>>> Host: 192.168.1.200:60010
>>>> Pragma: no-cache
>>>> Accept: text/xml
>>>> Content-Length: 1
>>>> Expect: 100-continue
>>>>
>>>> < HTTP/1.1 100 Continue
>>>> < HTTP/1.1 500 The+character+0x1b+is+not+valid%2E
>>>> < Date: Sun, 30 Dec 2007 23:24:02 GMT
>>>> < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
>>> java/1.5.0_12 <
>>>> Content-Type: text/html;charset=UTF-8 < Content-Length: 1286 <
>>>> Connection: close <html> <head> <title>Error 500 The
>>> character 0x1b is
>>>> not valid.</title> </head> <body> <h2>HTTP ERROR: 500</h2><pre>The
>>>> character 0x1b is not valid.</pre>
>>>> <p>RequestURI=/api/anchors/scanner/a99db67</p>
>>>> <p><i><small><a href="http://jetty.mortbay.org">Powered by
>>>> Jetty://</a></small></i></p> </body> </html>
>>>> * Closing connection #0
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>


Re: REST scanner get error 500 0x1b is not valid

Posted by Bryan Duxbury <br...@rapleaf.com>.
If keys and column names can be any arbitrary byte string, then  
definitely the REST servlet is not taking care of that right now. The  
answer is just base64 encoding all that stuff on gets as well. I'll  
create a new ticket.

-Bryan

On Dec 31, 2007, at 3:29 PM, Jim Kellerman wrote:

>> -----Original Message-----
>> From: Bryan Duxbury [mailto:bryan@rapleaf.com]
>> Sent: Monday, December 31, 2007 2:46 PM
>> To: hadoop-user@lucene.apache.org
>> Subject: Re: REST scanner get error 500 0x1b is not valid
>>
>> You're probably right - column names are not base64 encoded.
>> Isn't the contract of row/column keys printable strings?
>
> No. row keys do not need to be printable strings. In the future,
> they may be changed to an arbitrary WritableComparable, even
> less restrictive than Text.
>
> Column family names are restricted to the set: \w+:
>
> There is no restriction on the names of a column family member
> (the part of the column key after the initial ':')
>
> Table names are restricted to the set of characters: [\w-.]+
> except that table names starting with either '-' or '.' are
> reserved for HBase internal use.
>
>> If
>> so, then putting images in that field would appear to be a
>> mismatch. Even if you need to use images as qualifiers,
>> wouldn't it be more efficient to use an md5 of the image
>> rather than the actual image?
>>
>> -Bryan
>>
>> On Dec 30, 2007, at 3:56 PM, Billy wrote:
>>
>>> On one of my tables I get this when trying to get results from a
>>> scanner
>>>
>>> I call for the scanner location and get it fine but on the
>> first call
>>> I get the below error
>>>
>>> Error 500 The character 0x1b is not valid.
>>>
>>> Not sure if this has to do with with the first row in my table but
>>> that should not cause the scanner to return 500 error
>>>
>>> I can open scanner on other tables this one is the only one
>> doing this
>>> error.
>>>
>>> I tryed to delete the first row but no luck it will not
>> delete useing
>>> shell or rest. I have tryed several ways includeing
>> urlencodeing the
>>> row key and the col name but no luck
>>>
>>> First row in the table that would be called from the
>> scanner and below
>>> curl results with 500 error.
>>>
>>>
>>>
>>> hql > select * from anchors limit = 1;
>>> +-------------------------+-------------------------
>>> +-------------------------+
>>> | Row                     | Column                  | Cell
>>> |
>>> +-------------------------+-------------------------
>>> +-------------------------+
>>> | !vj!;c!"$/$i$7!"650i!| url:net.jcp-tokyo.www/ma|
>>> 1                       |
>>> | "4d6-$n=                | in/seisaku/index.htm:htt|
>>> |
>>> |                         | p                       |
>>> |
>>> +-------------------------+-------------------------
>>> +-------------------------+
>>> 1 row(s) in set. (0.61 sec)
>>>
>>>
>>> [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
>>> /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner?
>>> column=url:
>>> * About to connect() to 192.168.1.200 port 60010
>>> *   Trying 192.168.1.200... * connected
>>> * Connected to 192.168.1.200 (192.168.1.200) port 60010
>>>> PUT /api/anchors/scanner?column=url: HTTP/1.1
>>> User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
>>> OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
>>> Host: 192.168.1.200:60010
>>> Pragma: no-cache
>>> Accept: text/xml
>>> Content-Length: 1
>>> Expect: 100-continue
>>>
>>> < HTTP/1.1 100 Continue
>>> < HTTP/1.1 201 Created
>>> < Date: Sun, 30 Dec 2007 23:23:46 GMT
>>> < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
>> java/1.5.0_12 <
>>> Location: /api/anchors/scanner/a99db67 < Content-Length: 0
>>> * Connection #0 to host 192.168.1.200 left intact
>>> * Closing connection #0
>>> [root@PE1750-1 ~]# curl --verbose --header 'Accept: text/xml' -T
>>> /tmp/diff.txt http://192.168.1.200:60010/api/anchors/scanner/a99db67
>>> * About to connect() to 192.168.1.200 port 60010
>>> *   Trying 192.168.1.200... * connected
>>> * Connected to 192.168.1.200 (192.168.1.200) port 60010
>>>> PUT /api/anchors/scanner/a99db67 HTTP/1.1
>>> User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1
>>> OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
>>> Host: 192.168.1.200:60010
>>> Pragma: no-cache
>>> Accept: text/xml
>>> Content-Length: 1
>>> Expect: 100-continue
>>>
>>> < HTTP/1.1 100 Continue
>>> < HTTP/1.1 500 The+character+0x1b+is+not+valid%2E
>>> < Date: Sun, 30 Dec 2007 23:24:02 GMT
>>> < Server: Jetty/5.1.4 (Linux/2.6.9-67.0.1.ELsmp i386
>> java/1.5.0_12 <
>>> Content-Type: text/html;charset=UTF-8 < Content-Length: 1286 <
>>> Connection: close <html> <head> <title>Error 500 The
>> character 0x1b is
>>> not valid.</title> </head> <body> <h2>HTTP ERROR: 500</h2><pre>The
>>> character 0x1b is not valid.</pre>
>>> <p>RequestURI=/api/anchors/scanner/a99db67</p>
>>> <p><i><small><a href="http://jetty.mortbay.org">Powered by
>>> Jetty://</a></small></i></p> </body> </html>
>>> * Closing connection #0
>>>
>>>
>>>
>>>
>>
>>