Andrey,
I'll try to re-create the issue I have in a test case and send it to you. I
noticed in the forum today that someone else was getting the
OIndexException in a multi-threaded scenario.
Thanks,
Odysseas


On Wed, Mar 5, 2014 at 7:39 AM, Andrey Lomakin <[email protected]>wrote:

> Hi,
> I tried
>
> @Test
>   public void testDirtyTxQuery() throws Exception {
>     graph.createVertexType("vTX");
>
>     final CountDownLatch latch = new CountDownLatch(1);
>     final AtomicBoolean shutdownFlag = new AtomicBoolean(false);
>
>     final ExecutorService executorService =
> Executors.newCachedThreadPool();
>
>     final Future inserter = executorService.submit(new Callable<Void>() {
>       @Override
>       public Void call() throws Exception {
> OrientGraph graph = new OrientGraph(DB_URL);
>
>           latch.await();
>           int counter = 0;
>
>         while (!shutdownFlag.get()) {
>           graph.addVertex("class:vTX", "val", "val" + counter);
>           counter++;
>
> graph.command(new OCommandSQL("select count(*) from VTx")).execute();
>           if (counter % 100 == 0)
>             graph.commit();
>         }
>
>         return null;
>       }
>     });
>
>     final Future fetcher = executorService.submit(new Callable<Void>() {
>       @Override
>       public Void call() throws Exception {
> OrientGraph graph = new OrientGraph(DB_URL);
>         latch.await();
>
>         while (!shutdownFlag.get())
>           graph.command(new OCommandSQL("select count(*) from
> VTx")).execute();
>
>         return null;
>       }
>     });
>
>     latch.countDown();
>     Thread.sleep(300000);
>
>   shutdownFlag.set(true);
>
>     inserter.get();
>     fetcher.get();
>   }
>
>
> No issues.
>
> Could you provide test case ?
>
>
> On Fri, Feb 28, 2014 at 8:17 PM, Odysseas <[email protected]> wrote:
>
>>
>> I am continuing to investigate this problem to try and resolve it. It
>> looks like if you do a query against the database that looks at records
>> that are temporary, we get an exception.
>>
>> For example, while importing lots of records into the database using one
>> transaction for a fixed block of records (not a single transaction for all
>> N records that need to be imported but one transaction for a block M of
>> records where M << N), if before the transaction is committed you do a
>> query such as (select count(*) from V) then we get an exception to the read
>> operation that complains about the state of the transaction being in an
>> invalid state.
>>
>> If my analysis is correct, then this to me is either a bug or we are not
>> using the API correctly. I'll ask again for suggestions on what is causing
>> this.
>>
>> Thanks,
>> Odysseas
>>
>> On Friday, February 28, 2014 1:16:38 PM UTC-5, Odysseas wrote:
>>>
>>>
>>>
>>> On Tuesday, February 18, 2014 8:45:27 AM UTC-5, Odysseas wrote:
>>>>
>>>>
>>>> We are transitioning our application from 1.6.3 to 1.7-rc1 and have run
>>>> into an issue when re-deploying the application. When we first deploy the
>>>> application everything is working fine but if we redeploy it, it doesn't
>>>> seem
>>>> to be shutting down properly because during the restart we are getting
>>>> the following exception:
>>>>
>>>> Caused by: 
>>>> com.orientechnologies.orient.core.exception.OSerializationException:
>>>> Cannot load database's configuration. The database seems to be corrupted.
>>>>  at com.orientechnologies.orient.core.storage.impl.local.
>>>> OStorageConfigurationSegment.load(OStorageConfigurationSegment.java:74)
>>>>  at com.orientechnologies.orient.core.storage.impl.local.paginated.
>>>> OLocalPaginatedStorage.addDefaultClusters(OLocalPaginatedStorage.java:
>>>> 1933)
>>>>  at com.orientechnologies.orient.core.storage.impl.local.paginated.
>>>> OLocalPaginatedStorage.open(OLocalPaginatedStorage.java:191)
>>>>  ... 137 more
>>>> Caused by: com.orientechnologies.common.concur.lock.OLockException:
>>>> File '/mnt/sysnet/person-db/database.ocf' is locked by another
>>>> process, maybe the database is in use by another process. Use the remote
>>>> mode with a OrientDB server to allow multiple access to the same database.
>>>>  at com.orientechnologies.orient.core.storage.fs.OAbstractFile.
>>>> lock(OAbstractFile.java:375)
>>>> at com.orientechnologies.orient.core.storage.fs.OAbstractFile.
>>>> openChannel(OAbstractFile.java:641)
>>>>  at com.orientechnologies.orient.core.storage.fs.OAbstractFile.
>>>> open(OAbstractFile.java:141)
>>>> at com.orientechnologies.orient.core.storage.impl.local.
>>>> OSingleFileSegment.open(OSingleFileSegment.java:53)
>>>>  at com.orientechnologies.orient.core.storage.impl.local.
>>>> OStorageConfigurationSegment.load(OStorageConfigurationSegment.java:54)
>>>>
>>>> During the shutdown process we close the pool first
>>>> (OrientGraphFactory) and then shutdown the storage as before:
>>>>
>>>>             final OStorage stg = Orient.instance().getStorage(
>>>> entityStore.getStorageName());
>>>>             if (stg != null) {
>>>>                 stg.close();
>>>>             }
>>>>
>>>> The close on the storage is performed successfully. What are we missing
>>>> here? Is there a way to track who has the storage still open?
>>>>
>>>> Thanks,
>>>> Odysseas
>>>>
>>>  --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> --
> Best regards,
> Andrey Lomakin.
>
> Orient Technologies
> the Company behind OrientDB
>
>  --
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "OrientDB" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/orient-database/GDSDoWgJ-PU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to