-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python examples #143
Python examples #143
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! Left few comments
def main(): | ||
client = ImmudbClient(URL) | ||
# database parameter is optional | ||
client.login(LOGIN, PASSWORD, database=DB) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In immudb 1.2 we've introduced new session mechanism - @mabmayer is it used for this login functionality?
If not then we should promote the new session-based approach (that is necessary for opening SQL transactions)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@byo @tomekkolo No session mechanism right now supported.
# Bad login | ||
try: | ||
client.login("verybadlogin", "verybadpassword") | ||
except RpcError as exception: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An idea for future improvement: We should detect what error it is - like here that credentials are incorrect. There should be data sent along the error code from the backend in the details - it could be used to convert to appropriate specific exception.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely it should cast to some normal Exception
Unfortunately from my investigation on it - this exception have mainly 3 "normal" fields now
debug_error_string {"created":"@1649922703.326925387","description":"Error received from peer ipv6:[::1]:3322","file":"src/core/lib/surface/call.cc","file_line":903,"grpc_message":"invalid user name or password","grpc_status":2}
details invalid user name or password
code StatusCode.UNKNOWN
- it matches internal codes from GRPC, and not the code provided by server (08004)
I looked depper into it and i see that the proper status code is in some unparsed trailing_metadata field
(_Metadatum(key='grpc-status-details-bin', value=b'\x08\x02\x12\x1dinvalid user name or password\x1aE\n+type.googleapis.com/immudb.schema.ErrorInfo\x12\x16\n\x0508004\x12\rkey not found\x1a-\n+type.googleapis.com/immudb.schema.RetryInfo'),)
.....schema.ErrorInfo\x12\x16\n\x05------->08004<-------\x12\rkey not found\x1a-\n+type.google......
I will write an issue also
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tomekkolo Last year, I suggested immudb should report error codes. Error codes are used by many solutions in different areas, are language agnostic and are extensible. I remember Duncan worked on that and created a proposal. Can we continue where he stopped?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Covered uncovered python examples