Apicurio-studio: ν˜‘μ—… 쀑 API λ³€κ²½ 사항 μ €μž₯ 문제

에 λ§Œλ“  2019λ…„ 11μ›” 20일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: Apicurio/apicurio-studio

두 λͺ…μ˜ κ°œλ°œμžκ°€ λ™μ‹œμ— apicurio studioλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 Api의 μ œμž‘μžκ°€ μ•„λ‹Œ κ°œλ°œμžμ—κ²Œ μ €μž₯ 문제λ₯Ό μ•ΌκΈ°ν•©λ‹ˆλ‹€.
API의 'λΉ„μ†Œμœ μž'λŠ” μžμ‹ μ˜ 데이터 λ³€κ²½ 사항이 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ§€ μ•Šμ•˜λ‹€λŠ” λ©”μ‹œμ§€λ₯Ό 받지 μ•ŠμŠ΅λ‹ˆλ‹€. μΊμ‹œλ₯Ό μƒˆλ‘œ 고치면 λͺ¨λ“  λ³€κ²½ 사항이 μ†μ‹€λ˜κ³  이전 λ²„μ „μ˜ μž‘μ—…μ΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
API μ†Œμœ μžλŠ” μ΄λŸ¬ν•œ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. 그의 λ³€κ²½ 사항이 μ €μž₯λ©λ‹ˆλ‹€.
λΉ„ API μ†Œμœ μžλ‘œμ„œ API 사본을 λ§Œλ“€κ³  일반 μž‘μ—…μ„ 계속할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ·Έ λ™λ£ŒλŠ” κΈ°μ–΅λ ₯ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@덫
@bodograumann

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

에릭,

힌트λ₯Ό μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λͺ¨λ‘λ₯Ό μœ„ν•œ 곡유λ₯Ό -ws ν¬λ“œμ—λ„ μ„€μ •ν•˜μ—¬ 문제λ₯Ό "μˆ˜μ •"ν–ˆμŠ΅λ‹ˆλ‹€. https://hub.docker.com/r/apicurio/apicurio-studio-ws μ—μ„œ μ˜΅μ…˜μœΌλ‘œ 보지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€

μ›ν•œλ‹€λ©΄ k8s-configsλ₯Ό μ •λ¦¬ν•˜κ³  ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ³΄λ‚΄κ² μŠ΅λ‹ˆλ‹€. λ‹€μŒμ£Ό μ΄ˆκΉŒμ§€λŠ” ν•  수 μžˆμ„ 것 κ°™μ•„μš”.

λͺ¨λ“  13 λŒ“κΈ€

κ·Έ 쒋지 μ•Šλ‹€. μ–΄λ–€ λ²„μ „μ˜ Apicurioλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 이것은 ν΄λΌμš°λ“œ λ²„μ „μ—μ„œ λ°œμƒν•©λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” μ΅œκ·Όμ— 이와 같은 문제λ₯Ό λ°œκ²¬ν•˜κ³  μˆ˜μ •ν–ˆμ§€λ§Œ( SHARE_FOR_EVERYONE κΈ°λŠ₯을 μ‚¬μš©ν•  λ•Œλ§Œ), μ΅œμ‹  버전을 μ‚¬μš© μ€‘μ΄κ±°λ‚˜ ν•΄λ‹Ή κΈ°λŠ₯을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 이것은 μƒˆλ‘œμš΄ 버그일 수 μžˆμŠ΅λ‹ˆλ‹€.

kubernetesμ—μ„œ μ‹€ν–‰ 쀑인 μ΅œμ‹  버전 0.243.final이 있고 SHARE_FOR_EVERYONE이 ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

@EricWittmannμ—μ„œ λΉ λ₯΄κ²Œ λ‹΅λ³€ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.
ν₯λ―Έλ‘­κ²Œλ„ λ³€κ²½ 사항은 λ‹€μ‹œ λ‘œλ“œν•œ ν›„ μ§€μ†λ˜μ§€ μ•Šλ”λΌλ„ ν™œλ™ λ‘œκ·Έμ— ν‘œμ‹œλ©λ‹ˆλ‹€.
@t-rap이 곧 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³Ό 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

이봐,

λ‹΅μž₯을 늦게 λ³΄λ‚΄μ„œ λ―Έμ•ˆν•΄:

도컀 ν—ˆλΈŒλ₯Ό 톡해 μ œκ³΅ν•œ 도컀 μ΄λ―Έμ§€λ‘œ kubernetesμ—μ„œ apicurio-studioλ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ
Apicurio-studio-ui, -ws, -api, -db (이미지: percona:5.7)

κ°œλ°œμžκ°€ μ‚¬μš©ν•  λ•Œ apicurio-studio-api의 디버그 λ©”μ‹œμ§€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

2019-11-20 15:12:05,053 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-66) Selecting the most recent api_content row of type 'document' for: 12 2019-11-20 15:12:05,056 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-66) Inserting an Editing Session UUID row: REDACTED 2019-11-20 15:12:05,070 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-66) Created Session ID: REDACTED 2019-11-20 15:12:05,070 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-66) Secret: REDACTED 2019-11-20 15:12:14,973 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-66) Retrieving contributors list for design with ID: 12 2019-11-20 15:12:14,973 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-66) Selecting all contributors for API Design: 12 2019-11-20 15:12:14,973 DEBUG [io.apicurio.studio.shared.config.Configuration] (default task-65) Config Property: APICURIO_SHARE_FOR_EVERYONE/apicurio.share.for.everyone = true 2019-11-20 15:12:14,973 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-65) Selecting activity for API Design: 12 from 0 to 10 2019-11-20 15:12:14,983 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-64) Selecting mock activity for API Design: 12 from 0 to 20 2019-11-20 15:12:14,997 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) Getting an API design with ID 12 2019-11-20 15:12:14,997 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-67) Selecting a single API Design: 12 2019-11-20 15:12:17,810 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) Getting an API design with ID 12 2019-11-20 15:12:17,810 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-67) Selecting a single API Design: 12 2019-11-20 15:12:17,860 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) Editing an API Design with ID 12 2019-11-20 15:12:17,860 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) USER: REDACTED 2019-11-20 15:12:17,860 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-67) Selecting the most recent api_content row of type 'document' for: 12 2019-11-20 15:12:17,862 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-67) Inserting an Editing Session UUID row: REDACTED 2019-11-20 15:12:17,875 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) Created Session ID: REDACTED 2019-11-20 15:12:17,875 DEBUG [io.apicurio.hub.api.rest.impl.DesignsResource] (default task-67) Secret: REDACTED

apicurio-studio-ws의 경우 λ‹€μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

2019-11-20 15:14:31,640 DEBUG [io.apicurio.hub.core.editing.ops.processors.CommandProcessor] (default task-3) user: REDACTED 2019-11-20 15:14:31,640 DEBUG [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (default task-3) Inserting a 'command' content row for: 12 2019-11-20 15:14:31,659 DEBUG [io.apicurio.hub.core.editing.ops.processors.CommandProcessor] (default task-3) ACK sent back to client. 2019-11-20 15:14:31,659 DEBUG [io.apicurio.hub.core.editing.ops.processors.CommandProcessor] (default task-3) Command propagated to 'other' clients. 2019-11-20 15:14:33,145 DEBUG [io.apicurio.hub.core.editing.ops.processors.OperationProcessorDispatcher] (default task-3) Received a "ping" message/operation from a client for API Design: 12 2019-11-20 15:14:44,989 DEBUG [io.apicurio.hub.core.editing.ops.processors.OperationProcessorDispatcher] (default task-3) Received a "ping" message/operation from a client for API Design: 15 2019-11-20 15:14:46,691 DEBUG [io.apicurio.hub.editing.EditApiDesignEndpoint] (default task-3) Closing a WebSocket due to: 2019-11-20 15:14:46,692 DEBUG [io.apicurio.hub.editing.EditApiDesignEndpoint] (default task-3) designId: 12

κ·Έλž˜μ„œ 이것은 ν™•μ‹€νžˆ μ΅œκ·Όμ— μˆ˜μ •ν•œ λ²„κ·Έμ˜€μŠ΅λ‹ˆλ‹€. κ°€μž₯ 졜근 릴리슀 이후에 μˆ˜μ •ν–ˆμ„ κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€. ν™•μΈν•˜κ³  μ—¬κΈ°μ—μ„œ λ‹€μ‹œ μ—°λ½λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

확인 이 λ¬Έμ œμ— λŒ€ν•œ μˆ˜μ •μ΄ κ°€μž₯ 졜근 릴리슀 이후에 μˆ˜ν–‰λ˜μ—ˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 두 가지 μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

1) λ‹€μŒ 릴리슀λ₯Ό κΈ°λ‹€λ¦½λ‹ˆλ‹€.
2) λ§ˆμŠ€ν„°μ—μ„œ μ΅œμ‹  λΉŒλ“œ 및 μ‹€ν–‰

μ˜΅μ…˜ (2)λŠ” μ•„λ§ˆλ„ 당신이 μƒκ°ν•˜λŠ” 것보닀 더 μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμ§€λ§Œ μ—¬μ „νžˆ λ‹Ήμ‹ μ—κ²Œ μ΄μƒμ μ΄μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. μ•„λ§ˆ μ΄λ²ˆμ£Όλ§μ— 또 λ‹€λ₯Έ 릴리즈λ₯Ό ν•  수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. 릴리슀λ₯Ό νŠΈλ¦¬κ±°ν•˜κΈ° 전에 λΉ„ν™œμ„±ν™”(λ˜λŠ” μ΅œμ†Œν•œ UIμ—μ„œ ν‘œμ‹œ)ν•΄μ•Ό ν•˜λŠ” λͺ‡ 가지 μ‹€ν—˜ κΈ°λŠ₯이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ§€κΈˆ μƒˆ 릴리슀λ₯Ό μ‹œμž‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œμ— λŒ€ν•œ μˆ˜μ • 사항이 포함될 κ²ƒμž…λ‹ˆλ‹€. μΆœμ‹œ λ…ΈνŠΈμ— ν¬ν•¨λ˜λ„λ‘ νμ‡„λ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€. :)

μ•ˆλ…• 에릭,

λ¬Έμ œκ°€ μ—¬μ „νžˆ μžˆλŠ” 것 κ°™μ§€λ§Œ μ§€κΈˆμ€ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€. 우리 잘λͺ»μΈμ§€ μ•„λ‹Œμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 더 μžμ„Ένžˆ μ•Œμ•„λ³Ό 수 μžˆλŠ” νžŒνŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

```2019-11-22 10:16:14,057 였λ₯˜ [io.apicurio.hub.core.storage.jdbc.JdbcStorage] (κΈ°λ³Έ μž‘μ—…-1) μ΅œμ‹  μ½˜ν…μΈ  λ¬Έμ„œ κ°€μ Έμ˜€κΈ° 였λ₯˜: java.lang.IllegalStateException: ν•˜λ‚˜μ˜ μš”μ†Œκ°€ ν•„μš”ν•¨ , κ·ΈλŸ¬λ‚˜ 아무것도 찾지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€
org.jdbi.v3.core.result.ResultIterable.one(ResultIterable.java:135)
io.apicurio.hub.core.storage.jdbc.JdbcStorage.lambda$getLatestContentDocument$23(JdbcStorage.java:655)
org.jdbi.v3.core.Jdbi.withHandle(Jdbi.java:341)
io.apicurio.hub.core.storage.jdbc.JdbcStorage.getLatestContentDocument(JdbcStorage.java:648)
io.apicurio.hub.core.storage.jdbc.JdbcStorage$Proxy$_$$_WeldClientProxy.getLatestContentDocument(μ•Œ 수 μ—†λŠ” 좜처)
io.apicurio.hub.core.storage.RollupExecutor.rollupCommands(RollupExecutor.java:56)
io.apicurio.hub.core.storage.RollupExecutor.rollupCommands(RollupExecutor.java:108)
io.apicurio.hub.core.storage.RollupExecutor$Proxy$_$$_WeldClientProxy.rollupCommands(μ•Œ 수 μ—†λŠ” μ†ŒμŠ€)
io.apicurio.hub.core.editing.EditingSession.closeμ—μ„œ(EditingSession.java:131)
io.apicurio.hub.core.editing.EditingSessionManager.closeEditingSession(EditingSessionManager.java:116)
io.apicurio.hub.core.editing.EditingSessionManager$Proxy$_$$_WeldClientProxy.closeEditingSession(μ•Œ 수 μ—†λŠ” 좜처)
io.apicurio.hub.editing.EditApiDesignEndpoint.onCloseSession(EditApiDesignEndpoint.java:215)
sun.reflect.NativeMethodAccessorImpl.invoke0μ—μ„œ(λ„€μ΄ν‹°λΈŒ λ©”μ„œλ“œ)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)μ—μ„œ
sun.reflect.DelegatingMethodAccessorImpl.invokeμ—μ„œ(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)μ—μ„œ
io.undertow.websockets.jsr.annotated.BoundMethod.invoke(BoundMethod.java:87)
io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$4.run(AnnotatedEndpoint.java:201)
io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:169)
io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:166)
io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:603)
io.undertow.websockets.jsr.ServerWebSocketContainer$6.run(ServerWebSocketContainer.java:589)
io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:67)
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)μ—μ„œ
org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
java.lang.Thread.run(Thread.java:748)μ—μ„œ

2019-11-22 10:16:14,057 였λ₯˜ [io.apicurio.hub.core.editing.EditingSession](κΈ°λ³Έ μž‘μ—…-1) νŽΈμ§‘ μ„Έμ…˜μ„ λ‹«λŠ” λ™μ•ˆ 였λ₯˜κ°€ κ°μ§€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.: io.apicurio.hub.core.exceptions.NotFoundException
io.apicurio.hub.core.storage.jdbc.JdbcStorage.getLatestContentDocument(JdbcStorage.java:659)
io.apicurio.hub.core.storage.jdbc.JdbcStorage$Proxy$_$$_WeldClientProxy.getLatestContentDocument(μ•Œ 수 μ—†λŠ” 좜처)
io.apicurio.hub.core.storage.RollupExecutor.rollupCommands(RollupExecutor.java:56)
io.apicurio.hub.core.storage.RollupExecutor.rollupCommands(RollupExecutor.java:108)
io.apicurio.hub.core.storage.RollupExecutor$Proxy$_$$_WeldClientProxy.rollupCommands(μ•Œ 수 μ—†λŠ” μ†ŒμŠ€)
io.apicurio.hub.core.editing.EditingSession.closeμ—μ„œ(EditingSession.java:131)
io.apicurio.hub.core.editing.EditingSessionManager.closeEditingSession(EditingSessionManager.java:116)
io.apicurio.hub.core.editing.EditingSessionManager$Proxy$_$$_WeldClientProxy.closeEditingSession(μ•Œ 수 μ—†λŠ” 좜처)
io.apicurio.hub.editing.EditApiDesignEndpoint.onCloseSession(EditApiDesignEndpoint.java:215)
sun.reflect.NativeMethodAccessorImpl.invoke0μ—μ„œ(λ„€μ΄ν‹°λΈŒ λ©”μ„œλ“œ)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)μ—μ„œ
sun.reflect.DelegatingMethodAccessorImpl.invokeμ—μ„œ(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)μ—μ„œ
io.undertow.websockets.jsr.annotated.BoundMethod.invoke(BoundMethod.java:87)
io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$4.run(AnnotatedEndpoint.java:201)
io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:169)
io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:166)
io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:603)
io.undertow.websockets.jsr.ServerWebSocketContainer$6.run(ServerWebSocketContainer.java:589)
io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:67)
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)μ—μ„œ
org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
java.lang.Thread.run(Thread.java:748)```μ—μ„œ

λ‚˜λŠ” 이것이 버그 μˆ˜μ •μ΄ μ—†μ—ˆλ‹€λ©΄ μ˜ˆμƒν–ˆλ˜ λ°”λ‘œ κ·Έ 였λ₯˜λΌκ³  ν™•μ‹ ν•©λ‹ˆλ‹€. μ½”λ“œμ— λŒ€ν•œ 링크λ₯Ό νŒŒν—€μ³ λ³΄κ² μŠ΅λ‹ˆλ‹€...

μ’‹μ•„, 방금 μ‹œκ°„μ„ λ‚­λΉ„ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ ν™•μΈν–ˆμ§€λ§Œ μ΅œμ’… 버전인 것 κ°™μŠ΅λ‹ˆλ‹€.

버전 | 0.2.44.결승
-- | --
λ‚΄μž₯ | 2019λ…„ 11μ›” 21일
μ—λ””μ…˜ | CLIv7
ν”„λ‘œμ νŠΈ URL | http://www.apicur.io/

μš°λ¦¬λŠ” 이미 μ‘΄μž¬ν•˜λŠ” 였래된 APIλ₯Ό ν…ŒμŠ€νŠΈν•˜κ³  μƒˆλ‘œμš΄ APIλ₯Ό λ§Œλ“€κ³  ν…ŒμŠ€νŠΈν–ˆμœΌλ©° λ‹€λ₯Έ κ³„μ •μœΌλ‘œ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

μ•Œμ•˜μ–΄ κ³ λ§ˆμ›Œ. λ”°λΌμ„œ ν•΄λ‹Ή μŠ€νƒ μΆ”μ μ—μ„œ μΌμ–΄λ‚˜λŠ” 일은 API의 λͺ¨λ“  νŽΈμ§‘μžκ°€ νŽΈμ§‘μ„ μ™„λ£Œν•  λ•Œλ§ˆλ‹€(νŽΈμ§‘κΈ° μ’…λ£Œ/λ‹«κΈ°) μ„œλ²„κ°€ λͺ¨λ“  λ³€κ²½ 사항을 λ¬Έμ„œ μŠ€λƒ…μƒ·μœΌλ‘œ λ‘€μ—…ν•˜λ €κ³  μ‹œλ„ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것은 μ—¬κΈ°μ—μ„œ λ‘€μ—… 싀행기에 μ˜ν•΄ μˆ˜ν–‰λ©λ‹ˆλ‹€.

https://github.com/Apicurio/apicurio-studio/blob/master/back-end/hub-core/src/main/java/io/apicurio/hub/core/storage/RollupExecutor.java

μ΄λ ‡κ²Œ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

1) λ§ˆμ§€λ§‰ λ¬Έμ„œ μŠ€λƒ…μƒ· κ°€μ Έμ˜€κΈ°
2) κ·Έ μ΄ν›„μ˜ λͺ¨λ“  λ³€κ²½ 사항(λͺ…λ Ήμ–΄) λͺ©λ‘μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€.
3) λ§ˆμ§€λ§‰ λ¬Έμ„œ μŠ€λƒ…μƒ·μ— λͺ¨λ“  λ³€κ²½/λͺ…λ Ή 적용
4) μƒˆ μŠ€λƒ…μƒ·μ„ DB에 λ‹€μ‹œ μ €μž₯

이전 μŠ€λƒ…μƒ·μ„ 찾을 수 μ—†κΈ° λ•Œλ¬Έμ— 1λ‹¨κ³„μ—μ„œ μ‹€νŒ¨ν•©λ‹ˆλ‹€. API λ””μžμΈμ΄ 처음 생성될 λ•Œ μŠ€λƒ…μƒ·μ΄ μƒμ„±λ˜κΈ° λ•Œλ¬Έμ— λΆˆκ°€λŠ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ 곡유" μ˜΅μ…˜μ΄ -api Apicurio ꡬ성 μš”μ†Œμ— λŒ€ν•΄ ν™œμ„±ν™”λ˜μ–΄ μžˆμ§€λ§Œ -ws Apicurio ꡬ성 μš”μ†Œμ— λŒ€ν•΄μ„œλŠ” ν™œμ„±ν™”λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” 것일 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 원본 μŠ€λƒ…μƒ·μ€ ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜μ§€λ§Œ μ‚¬μš©μž Aκ°€ μƒμ„±ν–ˆκΈ° λ•Œλ¬Έμ— μ‚¬μš©μž Bκ°€ 둀업을 μ‹œλ„ν•  λ•Œ(λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ κ³΅μœ κ°€ λΉ„ν™œμ„±ν™”λ¨) μŠ€λƒ…μƒ·μ„ 찾을 λ•Œ 잘λͺ»λœ SQL이 μ‹€ν–‰λ˜κ³  찾을 수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ -ws apicurio ꡬ성 μš”μ†Œμ—μ„œλ§Œ λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ 곡유 κΈ°λŠ₯의 잘λͺ»λœ κ΅¬μ„±μœΌλ‘œ 인해 이 μ½”λ“œκ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/Apicurio/apicurio-studio/blob/master/back-end/hub-core/src/main/java/io/apicurio/hub/core/storage/jdbc/JdbcStorage.java#L650 - L655

λͺ¨λ“  μ‚¬λžŒμ„ μœ„ν•œ κ³΅μœ κ°€ -apiμ—μ„œ ν™œμ„±ν™”λ˜μ–΄ μžˆμ§€λ§Œ -wκ°€ μ•„λ‹Œ β€‹β€‹κ²½μš° 이 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ‹Ήμ‹ μ˜ kubernetes 섀정을 λ³Ό ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€ -ws ꡬ성 μš”μ†Œμ˜ ꡬ성 μ˜΅μ…˜μž…λ‹ˆλ‹€. λ‹€μŒμ€ 이 λ¬Έμ œμ— λŒ€ν•œ μ£Όμš” μˆ˜μ • 사항 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

https://github.com/Apicurio/apicurio-studio/commit/7f4994bc907e1720ffd6f8ff81e844c032edbf79#diff -b1ff2c3381198f745ae9dc8add793d61

에릭,

힌트λ₯Ό μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λͺ¨λ‘λ₯Ό μœ„ν•œ 곡유λ₯Ό -ws ν¬λ“œμ—λ„ μ„€μ •ν•˜μ—¬ 문제λ₯Ό "μˆ˜μ •"ν–ˆμŠ΅λ‹ˆλ‹€. https://hub.docker.com/r/apicurio/apicurio-studio-ws μ—μ„œ μ˜΅μ…˜μœΌλ‘œ 보지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€

μ›ν•œλ‹€λ©΄ k8s-configsλ₯Ό μ •λ¦¬ν•˜κ³  ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ³΄λ‚΄κ² μŠ΅λ‹ˆλ‹€. λ‹€μŒμ£Ό μ΄ˆκΉŒμ§€λŠ” ν•  수 μžˆμ„ 것 κ°™μ•„μš”.

μ—„μ²­λ‚œ! ν•΄λ‹Ή μ˜΅μ…˜μ„ ν¬ν•¨ν•˜λ„λ‘ ν•΄λ‹Ή 이미지에 λŒ€ν•œ λ¬Έμ„œλ₯Ό μ—…λ°μ΄νŠΈν•˜κ² μŠ΅λ‹ˆλ‹€. k8s ꡬ성에 λŒ€ν•΄ μ„œλ‘λ₯΄μ§€λŠ” μ•Šμ§€λ§Œ κΈ°μ—¬λŠ” 맀우 ν™˜μ˜ν•  κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰