我有一个基于OSGi的应用程序的Maven/Tycho构建,偶尔会因例外而失败.
我有大约20个eclipse功能,它似乎与实际功能没有任何关系(它可能是每次都失败的不同功能,并且通常构建工作正常)
这不是灾难,但我想在某些时候解决这个问题,而且我真的不知道如何调试这个进一步没有潜入Tycho代码或开始乱用随机设置.
这对任何人都响了吗?
系统:Fedora Linux JVM:OpenJDK运行时环境(IcedTea6 1.11.3)(fedora-67.1.11.3.fc16-x86_64)Maven:3.0.3 Tycho:0.15.0
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.15.0:package-feature (default-package-feature) on project com.dexels.navajo.tipi.swing.feature: Execution default-package-feature of goal org.eclipse.tycho:tycho-packaging-plugin:0.15.0:package-feature failed: com.dexels.navajo:com.dexels.navajo.tipi.swing.deps:eclipse-plugin:1.2.1-SNAPSHOT does not provide an artifact with classifier 'null'
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:98)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:64)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:287)
at …Run Code Online (Sandbox Code Playgroud) 是否可以使用某种api添加声明性服务?
一点背景:
我有一个基于动态脚本的服务器应用程序(可以随时添加,编辑或删除它们).这些脚本依赖于OSGi服务,并且可能相互依赖.每当编辑脚本时,脚本都会编译为javascript,并检测其依赖关系.
那时,我想(重新)将其注册为声明性服务,因此当它的依赖性来去时它将被激活/停用.
我有一个问题,当我使用flatmap时,我的Observable链不会终止.
我把我的例子归结为:
int count = Observable.just(1,2,3)
.flatMap(s -> Observable.<Integer>create(subscr-> {
subscr.onNext(s);
if(s>2) {
subscr.onCompleted();
}
}))
.doOnEach(a->System.err.println(a.getKind()+" -> "+a.toString()))
.count()
.toBlocking()
.first();
System.err.println("Count: "+count);
Run Code Online (Sandbox Code Playgroud)
我希望'doOnEach'报告三个onNext事件,然后是onCompleted,最后链应该终止.
但是,输出是这样的:
OnNext -> [rx.Notification@c9e6d24d OnNext 1]
OnNext -> [rx.Notification@c9e6d24e OnNext 2]
OnNext -> [rx.Notification@c9e6d24f OnNext 3]
Run Code Online (Sandbox Code Playgroud)
(然后继续挂)
如果我删除flatMap运算符:
int count = Observable.just(1,2,3)
.doOnEach(a->System.err.println(a.getKind()+" -> "+a.toString()))
.count()
.toBlocking()
.first();
System.err.println("Count: "+count);
Run Code Online (Sandbox Code Playgroud)
......它的工作方式完全符合预期:
CREATED!
OnNext -> [rx.Notification@e3598bd9 OnNext 1]
OnNext -> [rx.Notification@e3598bda OnNext 2]
OnNext -> [rx.Notification@e3598bdb OnNext 3]
OnCompleted -> [rx.Notification@3834d63f OnCompleted]
Count: 3
Run Code Online (Sandbox Code Playgroud)
我想我做错了什么(我无法想象这种基本场景中的错误),但我没有看到它.
任何帮助表示赞赏......(我正在使用RxJava …
我正在处理通过回调到达的热事件流。“下游”我想将其拆分为多个流,并对其进行处理。事件都从单个线程(我无法控制,因此我不认为我可以在这里使用协同例程)按顺序到达在这里使用正确的结构?
我可以很容易地创建一个 Flow,使用 callbackFlow 和 sendBlocking,但语义似乎不一致,因为 Flow 并不冷。将流拆分为多个下游流的最佳方法是什么(取决于事件的内容)。还是我应该使用渠道?它与我的来源的“热度”相匹配,但整个下游轮询似乎关闭(在这种基本上是同步的情况下),并且许多方法似乎已被弃用而支持 Flow。
我可以通过使用“一路回调”来完成所有这些,但这会产生比我想要的更紧密的耦合。有任何想法吗?
编辑:
我结束了这个,似乎工作:
fun testFlow() {
runBlocking {
val original = flowOf("aap", "noot", "mies", "wim", "zus","jet","weide","does")
val broadcast = original.broadcastIn(this)
val flow1 = broadcast.openSubscription().receiveAsFlow().filter { it.length == 4 }
val flow2 = broadcast.openSubscription().receiveAsFlow().filter { it.length == 3 }
flow1.collect { it -> println("Four letter: ${it}") }
flow2.collect { it -> println("Three letter: ${it}") }
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个在 Amazon RDS 上运行的小型 Postgres 开发数据库,并且正在运行 K8s。据我所知,几乎没有任何交通。我想启用更改捕获,我启用了 rds.logic_replication,启动了 Debezium 实例,主题出现在 Kafka 中,一切看起来都很好。
它开始以恒定的速度消耗磁盘,并在 24 小时内耗尽所有可用的 20Gb。停止 Debezium 没有任何作用。我恢复磁盘空间的方法是:
select pg_drop_replication_slot('services_debezium')
Run Code Online (Sandbox Code Playgroud)
和:
vacuum full
Run Code Online (Sandbox Code Playgroud)
然后,几分钟后,如图所示,磁盘空间被回收。
有小费吗?我很想看看到底是什么东西填满了这个空间,但我想我做不到。Debezium 方面似乎没有发生任何事情(没有不祥的日志),Postgres 日志也没有显示任何特别的内容。或者是否有一些外部事件触发了这一点?
我不太了解最新的Apache Felix版本(4.0.2)的OSGi版本.
我已经读过Apache Felix 4符合OSGi 4.3,我认为这意味着Felix框架包将导出org.osgi.framework版本1.6.0.
它没有,快速查看Felix的清单说它出口版本1.5.0,所以(至少)其中一个假设是错误的.如果我检查Equinox 3.7,我确实看到了org.osgi.framework版本1.6.0的导出
谁能指出我正确的方向?
osgi ×3
apache-felix ×2
equinox ×2
amazon-rds ×1
debezium ×1
eclipse ×1
java ×1
kotlin ×1
maven ×1
postgresql ×1
rx-java ×1
tycho ×1