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 <mailto: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
    <mailto: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
        <mailto:Sedna-discussion@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/sedna-discussion





------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Sedna-discussion mailing list
Sedna-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sedna-discussion

Reply via email to