couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Newson <rnew...@apache.org>
Subject Re: Database information from validate_doc_update
Date Sat, 09 Nov 2013 10:37:57 GMT
validate_doc_update functions deliberately don't let you do this
otherwise eventually consistency can be compromised.

Also remember that the native view server has no sandbox, anyone
allowed to edit design documents can do anything to your servers that
the user you run couchdb as can (read files, open network connections,
delete files, etc).

B.


On 9 November 2013 09:02, first-leon@yandex.ru <first-leon@yandex.ru> wrote:
> It is very good!
> But, i create validation function and see error:
>
> Error: EXIT
>
> {{badmatch,[]},
>  [{couch_query_servers,new_process,3,
> [{file,"couch_query_servers.erl"},{line,472}]},
>   {couch_query_servers,lang_proc,3,
> [{file,"couch_query_servers.erl"},{line,462}]},
>   {couch_query_servers,handle_call,3,
> [{file,"couch_query_servers.erl"},{line,322}]},
>   {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},
> {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
>
> I am not understand Erlang code, and not see error details.
> You have it working?
>
> In /etc/couchdb/local.ini i added
> [native_query_servers]
> erlang = {couch_native_process, start_link, []}
>
>
>> Currently, this is possible only via native Erlang query server:
>>
>> fun(NewDoc, OldDoc, {UserCtx}, SecObj) ->
>>    DbName = couch_util:get_value(<<"db">>, UserCtx),
>>    {ok, Db} = couch_db:open_int(DbName, [{user_ctx, UserCtx}]),
>>    {ok, Info} = couch_db:get_db_info(Db),
>>    DiskSize = couch_util:get_value(disk_size, Info),
>>    case DiskSize < 100000 of  %% ~100KB
>>      true ->
>>        ok;
>>      false ->
>>        throw({[{<<"forbidden">>, <<"quota limit reached">>}]})
>>    end,
>>    1
>> end.
>>
>>
>>
>> --
>> ,,,^..^,,,
>>
>>
>> On Sat, Nov 9, 2013 at 7:56 AM, first-leon@yandex.ru
>> <first-leon@yandex.ru> wrote:
>>>
>>> Hello.
>>>
>>> Can I get information about the database as a function of
>>> validate_doc_update? For example, to find out the size of the database or
>>> the number of documents.
>>>
>>> Example:
>>> function(newDoc, oldDoc, userCtx) {
>>>   if ( thisDb.disk_size > 1000 ) throw({forbidden : 'you have exceeded
>>> the
>>> limit'});
>>> }
>>>
>>> It is possible?
>>>
>>> Thanks.
>
>

Mime
View raw message