Skip to content

Instantly share code, notes, and snippets.

@imbajin
Last active June 8, 2023 09:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imbajin/1661450f000cd62a67e46d4f1abfe82c to your computer and use it in GitHub Desktop.
Save imbajin/1661450f000cd62a67e46d4f1abfe82c to your computer and use it in GitHub Desktop.
hugegraph-server 本地调试文档 (Win/Unix)

本地调试

考虑到不少同学/用户是用 Windows 环境开发, 而 Windows 下一些 path 解析和环境问题会比较蛋疼, 所以用它来举例. 而其他 Mac/Linux 是类似的, 只是不用特殊处理 path, 更加简单.

本地启动核心与脚本启动是一样的, 而且更为简单, 通用只需一/两步:

  1. 如果是第一次使用/或者新增了新的图, 执行 InitStore 类初始化图 (后续可省)
  2. 执行 HugeGraphServer 类加载初始化的图信息启动 (每次启/停/debug)

请注意下面的配置文件随时可能会有更新, 请务必按最新代码的 path/name 来确认, 不一致的地方应询问确认提交 PR 修正, 谢谢

1. Server端

另目前版本的 mvn 编译时自动生成脚本的地方是 bash 不兼容, 如果需要 windows 本地编译可以参考 issue 中相关方法注释掉部分, 更推荐使用 wsl2 环境

  1. 首先copy一份配置文件到你本地一个目录 (e.g: hugegraph/hugegraph-dist/src/assembly/static/conf) , 假设本地是D:\conf , 在IDEA的Run/Debug configurations 里新建一个Application , 然后先选中Use classpath of modulehugegraph-dist , 再设置Main classInitStore

  2. 根据初始化脚本, 我们需要手动传入gremlin-server.yaml 文件, 这里写D:\conf\gremlin-server.yaml , 然后保存

  3. gremlin-server.yaml文件里的graphs配置值用双引号括起来写绝对路径, 不然会一直提示找不到文件. 然后单机运行的话, 建议修改hugegraph.properties 的backend为Mysql(自行安装). 然后保存后, 运行 InitSotre, 没用rocksdb是因为在 win 下安装麻烦(Linux/Mac可直接用),

  4. 另外一个好处是对于新同学来说, mysql 的可视化/表结构最为简单清晰(可作为最初的入门/查看表结构的方式, 但后续仍要以 binary 为主)

    # 仅 0.12 以下的版本需要配置, 新版/apache 版均无需配置, 请注意更新查看 (官方文档应以最新版配置文件作为参考说明)
    graphs: {
        hugegraph: "D:\\conf\\hugegraph.properties"
    }
    
    # 最新的Server更新了Tinkerpop版本,你需要用新的模板替代
    org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: { 
        files: ["D:\\conf\\scripts\\empty-sample.groovy"]
    }
  5. 提示初始化成功后, 再修改刚才配置的Main classHugeGraphServer ,然后加一个配置文件如D:\conf\rest-server.properties ,这里注意不能加双引号, 也要写绝对路径.

    # 得这样写...反斜杠建议别省, 官网文档建议分 unix/windows 的两个方式说明更好一些
    # 另外如果相对路径无法读取, 需要使用绝对路径, 原因待确定 (可以标记为一个优化 todo)
    graphs=[hugegraph:D:\\conf\\hugegraph.properties]  
  • 再就可以在各种测试里愉快的对代码进行调教了, 然后JVM观察也会方便许多
  • 注意, 如果你发现更新拉取了远端代码之后运行 Server 失败, 那么很可能是以下两种原因:
    1. 配置文件更新改了, 和原先的冲突 (你需要查看最新的配置文件, 然后适配一下)
    2. 后端的数据结构改变了, 导致初始化失败 (你需要清空/或删除本地DB, 然后重新初始化图)

2. loader端 (可略)

非 Windows 端同学可略过

loader端主要是新版在 Win 下可能有个很蛋疼的配置文件插件bug问题, 导致无法生成测试用的profile.properties文件, 解决办法参考Stackoverflow后如下:

           <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                 <version>1.0</version>
      <!-- 把配置标签从原本的executions搬出来...如果有波浪线提示就自动修复一下,不管也行.. -->
                <configuration><outputFile> ... </outputFile></configuration>
               
                <executions> .... </executions>
            </plugin>
@VGalaxies
Copy link

上述配置是基于 0.12 之前的版本,在最新的 master 分支下,server 端的配置有如下变化:

  1. 第一步,拷贝的配置文件还应包括 hugegraph/hugegraph-dist/src/assembly/static/scripts,否则运行 HugeGraphServer 时会报错
  2. 第二步,配置的运行参数应为 conf/graphs/hugegraph.properties

@VGalaxies
Copy link

日志相关的问题:

  1. 脚本启动下,Log4j2 日志使用的配置文件在 conf/log4j2.xml
  2. IDEA 启动下,Log4j2 日志使用的配置文件默认在 hugegraph-dist/src/main/resources/log4j2.xml,可以通过在 VM options 中添加 -Dlog4j.configurationFile=/path/to/log4j2.xml 覆盖
  3. 如果修改了 Log4j2 日志输出格式,可能会出现 location information 无输出的问题,这是因为 Log4j2 中使用了 asynchronous loggers,可以参考文档配置

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment