Índice de ignição do Titan Db

Eu tenho um gráfico com alguns índices. Eles são dois índices compostos com restrições de etiqueta. (ambos são exatamente iguais apenas em propriedades / rótulos diferentes). Um definitivamente parece funcionar, mas o outro não. Eu fiz o seguinte perfil () para a verificação dobrada:

Um é chamadoKeyOnNode : propriedadeuid e etiquetanode :

gremlin> g.V().hasLabel("node").has("uid", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(node), uid.eq(dammit_...                     1           1           2.565    96.84
  optimization                                                                                 1.383
  backend-query                                                        1                       0.231
SideEffectCapStep([~metrics])                                          1           1           0.083     3.16
                                            >TOTAL                     -           -           2.648        -

O acima é perfeitamente aceitável e funciona bem. Estou assumindo que a linha mágica ébackend-query.

O outro é chamadoNameOnSuperNode : propriedadename e etiquetasupernode:

gremlin> g.V().hasLabel("supernode").has("name", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(supernode), name.eq(n...                     1           1        5763.163   100.00
  optimization                                                                                 2.261
  scan                                                                                         0.000
SideEffectCapStep([~metrics])                                          1           1           0.073     0.00
                                            >TOTAL                     -           -        5763.236        -

Aqui, a consulta leva uma quantidade exorbitante de tempo e temos umascan linha. Originalmente, eu me perguntava se o índice não era confirmado pelo sistema de gerenciamento, mas infelizmente o seguinte parece funcionar bem:

gremlin> m = graphT.openManagement(); 
==>com.thinkaurelius.titan.graphdb.database.management.ManagementSystem@73c1c105
gremlin> index = m.getGraphIndex("NameOnSuperNode")
==>NameOnSuperNode
gremlin> index.getFieldKeys()
==>name
gremlin> import static com.thinkaurelius.titan.graphdb.types.TypeDefinitionCategory.*
==>null
gremlin> sv = m.getSchemaVertex(index)
==>NameOnSuperNode
gremlin> rel = sv.getRelated(INDEX_SCHEMA_CONSTRAINT, Direction.OUT)
==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@26b2b8e2
gremlin> sse = rel.iterator().next()
==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@2d39a135
gremlin> sse.getSchemaType()
==>supernode

Não posso simplesmente redefinir o db neste momento. Qualquer ajuda para identificar quais seriam os problemas seria incrível, estou batendo aqui. Isso é um sinal de que preciso reindexar?

INFO: Titan DB 1.1 (TP 3.1.1)

Felicidades

ATUALIZAÇÃO: Descobri que o índice em questão não está em umREGISTERED Estado:

gremlin> :> m = graphT.openManagement(); index = m.getGraphIndex("NameOnSuperNode"); pkey = index.getFieldKeys()[0]; index.getIndexStatus(pkey)
==>INSTALLED

Como faço para registrar? eu tenteim.updateIndex(index, SchemaAction.REGISTER_INDEX).get(); m.commit(); graphT.tx().commit(); mas parece não fazer nada

ATUALIZAÇÃO 2: Tentei registrar o índice para reindexar com o seguinte:

gremlin> m = graphT.openManagement(); 
index = m.getGraphIndex("NameOnSuperNode") ; 
import static com.thinkaurelius.titan.graphdb.types.TypeDefinitionCategory.*; 
import com.thinkaurelius.titan.graphdb.database.management.ManagementSystem; 
m.updateIndex(index, SchemaAction.REGISTER_INDEX).get();
ManagementSystem.awaitGraphIndexStatus(graphT, "NameOnSuperNode").status(SchemaStatus.REGISTERED).timeout(20, java.time.temporal.ChronoUnit.MINUTES).call();
m.commit();
graphT.tx().commit()

Mas isso não está funcionando. Eu ainda tenho meu índice noINSTALLED status e ainda estou recebendo um tempo limite. Eu verifiquei que não havia transações em aberto. Alguém tem uma ideia? Para sua informação, o gráfico está sendo executado em um único servidor e possui ~ 100K de vértices e ~ 130k de bordas.

questionAnswers(2)

yourAnswerToTheQuestion