Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 739AF10F14 for ; Sat, 9 Nov 2013 11:50:33 +0000 (UTC) Received: (qmail 28215 invoked by uid 500); 9 Nov 2013 11:50:29 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 28030 invoked by uid 500); 9 Nov 2013 11:50:25 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 28022 invoked by uid 99); 9 Nov 2013 11:50:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 09 Nov 2013 11:50:23 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of first-leon@yandex.ru designates 84.201.143.136 as permitted sender) Received: from [84.201.143.136] (HELO forward3l.mail.yandex.net) (84.201.143.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 09 Nov 2013 11:50:17 +0000 Received: from smtp12.mail.yandex.net (smtp12.mail.yandex.net [95.108.131.191]) by forward3l.mail.yandex.net (Yandex) with ESMTP id 057871500C65 for ; Sat, 9 Nov 2013 15:49:55 +0400 (MSK) Received: from smtp12.mail.yandex.net (localhost [127.0.0.1]) by smtp12.mail.yandex.net (Yandex) with ESMTP id B988C16A02B7 for ; Sat, 9 Nov 2013 15:49:55 +0400 (MSK) Received: from host-109-171-97-195.bbcustomer.zsttk.net (host-109-171-97-195.bbcustomer.zsttk.net [109.171.97.195]) by smtp12.mail.yandex.net (nwsmtp/Yandex) with ESMTP id zLT5RYOIFl-ntFq9nJ3; Sat, 9 Nov 2013 15:49:55 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1383997795; bh=K3pQPxplG3T7+05eEtqM/if2xReya3BPu1vgpfavhHk=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=Z5Zt9+QrerYhPP+KWrqcq+BRmIx2fKmo4JdHKHB/Ozbn3qGMeAoJoERxIWuB4OL23 2b1s7ptd0TKFbxA0IPkgPhO2UsuFXRF1SnOXRldIruZ1ljBQ7rygkTwXZrjHCyU1yS 6+hgSKXy4kGweyuYc+v0zT7U/SM2viII4d2FHBS8= Authentication-Results: smtp12.mail.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <527E2160.6050803@yandex.ru> Date: Sat, 09 Nov 2013 18:49:52 +0700 From: "first-leon@yandex.ru" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: user@couchdb.apache.org Subject: Re: Database information from validate_doc_update References: <527DB28B.20203@yandex.ru> <527DFA30.6020306@yandex.ru> <527E15EB.7050104@yandex.ru> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org I want set limit base document count. And now i see one way: 1) In Change Notifications function i see count document in base 2) if size of database larger given: replace validate_doc_update function and denied create new docs. It is long and slow way. Maybe someone will tell a better implementation? > Deliberately not, no, a validate_doc_update function is only passed > the new document you're trying to update, the current one (if there is > one), the context of the user and the security object for the > database. > > B. > > > On 9 November 2013 11:00, first-leon@yandex.ru wrote: >> And i not possible get information about data base from validate_doc_update? >> >>> 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 >>> 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 >>>>> 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. >>>>