Hi Jose,
Check your logs. It seems you still have a lot of doc("$documents") and
doc("$collections") calls.
Ivan
On Mon, Apr 8, 2013 at 6:33 PM, Jose Sierra <jose.sie...@integromics.com>wrote:
> Hello again Ivan.
>
> I have changed the exists sentene to the right one, but i continue with
> the same problem when trying to delete big files, and i can not get the
> results from queries in another collections (i attach the event file).
>
> Best regards,
> Jose
>
>
> On 03/04/2013 13:25, Ivan Shcheklein wrote:
>
> Ok. This is a simpler one then. See my today's answer to Jocelyn.
>
> Don't use doc("$documents") to check if there is document in the
> collection. Performance is very bad, database is locked, rollbacks, etc ...
> BTW, according to your logs you use it twice in each transaction:
>
> LOG 02/04/2013 12:28:59 (TRN omicshub pid=3220 sid=49 trid=49)
> [tr_functions.cpp:on_user_statement_begin:102]: User query:
> ---
> exists(document('$documents')/documents/collection[@name='proteins']/document[@name='BOOKMARK_48597973'])
> LOG 02/04/2013 12:28:59 (TRN omicshub pid=3220 sid=49 trid=49)
> [tr_functions.cpp:on_user_statement_begin:102]: User query:
> ---
> exists(document('$documents')/documents/collection[@name='proteins']/document[@name='BOOKMARK_48597973'])
> LOG 02/04/2013 12:28:59 (TRN omicshub pid=3220 sid=49 trid=49)
> [tr_functions.cpp:on_user_statement_begin:102]: User query:
>
> --- DROP document "BOOKMARK_48597973" in collection "proteins"
>
>
> I understand, that in case of XML:DB API it may be hard (not possible?)
> to completely avoid it. However, try to avoid replace and exists resource
> operations. Instead use direct query like this for now:
>
>
> exists(collection("col-name")[document-uri(.) eq "doc"])
>
>
> Very soon we will commit doc-available("col", "doc") function.
>
>
> On Wed, Apr 3, 2013 at 2:24 PM, Jose Sierra
> <jose.sie...@integromics.com>wrote:
>
>> Hello Ivan.
>>
>> I am working with transactions. This is an example using my own wrapper:
>>
>> SednaWrapper.execute( new SednaHandler() {
>> public void execute( final SednaWrapper wrapper ) throws Exception {
>> if(wrapper.existsDocument("summary", oid))
>> wrapper.deleteResource("summary", oid);
>> }
>> });
>>
>> The wrapper execute methos use transaction:
>>
>> public static void execute(final SednaHandler handler) throws
>> Exception {
>> synchronized( mutexTnx ) {
>> long startTime = 0;
>> if( logger.isDebugEnabled() ) {
>> logger.debug( "Enter execute(SednaHandler) in
>> SednaWrapper" );
>> startTime = Calendar.getInstance().getTimeInMillis();
>> }
>> SednaWrapper.executeCode( new SednaHandler() {
>> public void execute( final SednaWrapper wrapper ) throws
>> Exception {
>> TransactionService ts = null;
>> try {
>> ts = wrapper.startTransaction();
>> handler.execute( wrapper );
>> wrapper.commitTransaction( ts );
>> } catch( XMLDBException e ) {
>> // there is a special case in Sedna, where the
>> server has killed the current transaction because is in conflict with
>> another transaction,
>> // and the current transaction "lost" in the
>> resolution procedure. The rollback MUST not be called in this case.
>> boolean isSednaDeadlockResolution = e.errorCode
>> == ErrorCodes.VENDOR_ERROR && e.vendorErrorCode == 0 && e.getMessage() !=
>> null && e.getMessage().contains( "SEDNA Message: ERROR SE4703" );
>> if( !isSednaDeadlockResolution ) {
>> try {
>> wrapper.rollbackTransaction( ts );
>> }
>> catch( XMLDBException ignored ) {
>> // safely ignored
>> logger.error( "Exception: ", ignored );
>> }
>> }
>> logger.error( "Exception: ", e );
>> throw e;
>> }
>> catch( Exception t ) {
>> try {
>> wrapper.rollbackTransaction( ts );
>> }
>> catch( XMLDBException ignored ) {
>> // safely ignored
>> logger.error( "Exception: ", ignored );
>> }
>> logger.error( "Exception: ", t );
>> throw t;
>> }
>> }
>> } );
>>
>> if( logger.isDebugEnabled() ) {
>> long endTime = Calendar.getInstance().getTimeInMillis();
>> double timeInSeconds = (endTime - startTime) / 1000.0;
>> logger.debug( "Exiting execute(SednaHandler) in
>> SednaWrapper. Total time: " + timeInSeconds );
>> }
>> }
>> }
>>
>> I will take a look to the list for discussions about upd_crt.
>>
>> Thanks and best regards.
>> Jose Sierra
>>
>>
>>
>> On 03/04/2013 12:05, Ivan Shcheklein wrote:
>>
>> Hi Jose,
>>
>> I understand what's going in this case. Unfortunately, it's how Sedna
>> works by design.
>>
>> Very simplified explanation. To provide ACID transactions Sedna uses
>> snapshots (consider this as multiple copies of the database). All
>> transactions work with the latests one. If Sedna determines (see upd_crt in
>> docs) that the current snapshot has been updated enough, it starts
>> checkpoint procedure - make the current snapshot stable (flash all changes
>> to the disc) and start a new one (and make it current).
>>
>> Checkpoint procedure is the problem here. When Sedna wants to start it
>> (and it may happen right in the middle of your big transaction with a lot
>> of updates) it stops to accept any new transactions. It can be considered
>> as a global lock.
>>
>> It can't be fixed easily. Unfortunately, I don't know if it can be
>> fixed at all. As a workaround, you can try to avoid very long transactions
>> which update significant portion of the database. For example, you can run
>> every DROP as a transaction. You can also try to tune value of the upd_crt
>> (search history of this list for discussions about upd_crt).
>>
>> Ivan Shcheklein,
>> Sedna Team
>>
>>
>> On Tue, Apr 2, 2013 at 2:44 PM, Jose Sierra
>> <jose.sie...@integromics.com>wrote:
>>
>>> Hello Ivan.
>>>
>>> I have attached the logs with the problem.
>>>
>>> In the logs you can see several delete big files documents:
>>>
>>> --- DROP document "BOOKMARK_48597973" in collection "summary"
>>> --- DROP document "BOOKMARK_48597973" in collection "features"
>>> --- DROP document "BOOKMARK_48597973" in collection "peptides"
>>> --- DROP document "BOOKMARK_48597973" in collection "proteins"
>>>
>>> When these deleting process are working i try to get some new queries
>>> from differents collections, and the queries is not returned until the
>>> deletion is finished.
>>>
>>> I hope these logs help you to calrify my doubt.
>>>
>>> Best regards.
>>> Jose Sierra
>>>
>>>
>>> On 07/03/2013 14:56, Ivan Shcheklein wrote:
>>>
>>> Jose, I can't reproduce your problem exactly. Can you send us event logs?
>>>
>>>
>>> On Wed, Mar 6, 2013 at 8:51 PM, Jose Sierra <jose.sie...@integromics.com
>>> > wrote:
>>>
>>>> Hello.
>>>>
>>>> I am working with sedna 3.5.161, storing the files in different
>>>> collections. some of the files has a big size, and when i delete them,
>>>> all the other queries/transactions are locked and they don“t run even if
>>>> i am consulting/working with other collections. Now to delete i am using
>>>> the drop document in collection sentence. Exists some other way more
>>>> efficient to delete document or locking only the collection when i am
>>>> deleting the resource instead all the database?
>>>>
>>>> Best regards.
>>>> Jose Sierra
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester
>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the
>>>> endpoint security space. For insight on selecting the right partner to
>>>> tackle endpoint security challenges, access the full report.
>>>> http://p.sf.net/sfu/symantec-dev2dev
>>>> _______________________________________________
>>>> Sedna-discussion mailing list
>>>> Sedna-discussion@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/sedna-discussion
>>>>
>>>
>>>
>>>
>>
>>
>
>
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Sedna-discussion mailing list
Sedna-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sedna-discussion